Closed yoshidan closed 1 year ago
https://cloud.google.com/storage/docs/performing-resumable-uploads
ref #107
async fn run_with_metadata(client:Client) { let mut metadata = HashMap::<String, String>::new(); metadata.insert("key1".to_string(), "value1".to_string()); let upload_type = UploadType::Multipart(Box::new(Object { name: "test1_meta".to_string(), content_type: Some("text/plain".to_string()), metadata: Some(metadata), ..Default::default() })); let uploader = client.prepare_resumable_upload(&UploadObjectRequest{ bucket: "bucket".to_string(), ..Default::default() }, &upload_type, None).await.unwrap(); let chunk1_data : Vec<u8>= (0..256 * 1024).map(|i| (i % 256) as u8).collect(); let chunk2_data : Vec<u8>= (1..256 * 1024 + 50).map(|i| (i % 256) as u8).collect(); let total_size = TotalSize::Known(chunk1_data.len() + chunk2_data.len()); // The chunk size should be multiple of 256KiB, unless it's the last chunk that completes the upload. let chunk1 = ChunkSize::new(0, chunk1_data.len() - 1, total_size.clone()).unwrap(); let status1 = uploader.upload_multiple_chunk(chunk1_data.clone(), &chunk1).await.unwrap(); assert_eq!(status1, UploadStatus::ResumeIncomplete); let chunk2 = ChunkSize::new(chunk1_data.len(), chunk1_data.len() + chunk2_data.len() - 1, total_size.clone()).unwrap(); let status2 = uploader.upload_multiple_chunk(chunk2_data.clone(), &chunk2).await.unwrap(); assert_eq!(status2, UploadStatus::Ok);
https://cloud.google.com/storage/docs/performing-resumable-uploads
ref #107