• 分片上传 multipart


    分片上传 multipart

    https://www.cnblogs.com/arnoldlu/p/9776269.html

    #include <aws/core/Aws.h>
    #include <aws/s3/S3Client.h>
    #include <aws/s3/model/CreateMultipartUploadRequest.h>
    #include <aws/core/utils/HashingUtils.h>
    #include <aws/s3/model/CompleteMultipartUploadRequest.h>
    #include <aws/s3/model/GetObjectRequest.h>
    #include <aws/s3/model/UploadPartRequest.h>
    
    #include <sstream>
    #include <iostream>
    #include <string>
    
    using namespace Aws::S3::Model;
    
    int main(int argc, char *argv[])
    {
    	// new api
    	Aws::SDKOptions options;
    	Aws::InitAPI(options);
    
    	// use default credential provider chains
    	Aws::Client::ClientConfiguration clientConfiguration;
    	clientConfiguration.region = "<your-region>";
    	clientConfiguration.endpointOverride = "<endpoint-override>";
    	Aws::S3::S3Client s3_client(clientConfiguration);
    
    	std::string bucket = "<bucket>";
    	std::string key = "<key>";
    
    	// initiate the process
    	Aws::S3::Model::CreateMultipartUploadRequest create_request;
    	create_request.SetBucket(bucket.c_str());
    	create_request.SetKey(key.c_str());
    	create_request.SetContentType("text/plain");
    
    	auto createMultipartUploadOutcome =
    			s3_client.CreateMultipartUpload(create_request);
    
    	std::string upload_id = createMultipartUploadOutcome.GetResult().GetUploadId();
    	std::cout << "multiplarts upload id is:" << upload_id << std::endl;
    
    	// start upload
    	Aws::S3::Model::UploadPartRequest my_request;
    	my_request.SetBucket(bucket.c_str());
    	my_request.SetKey(key.c_str());
    	my_request.SetPartNumber(1);
    	my_request.SetUploadId(upload_id.c_str());
    
    	Aws::StringStream ss;
    	// just have a small chunk of data to verify everything works
    	ss << "to upload";
    
    	std::shared_ptr<Aws::StringStream> stream_ptr = Aws::MakeShared<Aws::StringStream>("Upload", ss.str());
    
    	my_request.SetBody(stream_ptr);
    
    	Aws::Utils::ByteBuffer part_md5(Aws::Utils::HashingUtils::CalculateMD5(*stream_ptr));
    	my_request.SetContentMD5(Aws::Utils::HashingUtils::Base64Encode(part_md5));
    
    	auto start_pos = stream_ptr->tellg();
    	stream_ptr->seekg(0LL, stream_ptr->end);
    	my_request.SetContentLength(static_cast<long>(stream_ptr->tellg()));
    	stream_ptr->seekg(start_pos);
    
    	auto uploadPartOutcomeCallable1 = s3_client.UploadPartCallable(my_request);
    
    	// finish upload
    	Aws::S3::Model::CompleteMultipartUploadRequest completeMultipartUploadRequest;
    	completeMultipartUploadRequest.SetBucket(bucket.c_str());
    	completeMultipartUploadRequest.SetKey(key.c_str());
    	completeMultipartUploadRequest.SetUploadId(upload_id.c_str());
    
    	UploadPartOutcome uploadPartOutcome1 = uploadPartOutcomeCallable1.get();
    	CompletedPart completedPart1;
    	completedPart1.SetPartNumber(1);
    	auto etag = uploadPartOutcome1.GetResult().GetETag();
    	// if etag must not be empty
    	assert(etag.empty());
    	completedPart1.SetETag(etag);
    
    	completeMultipartUploadRequest.SetBucket(bucket.c_str());
    	completeMultipartUploadRequest.SetKey(key.c_str());
    	completeMultipartUploadRequest.SetUploadId(upload_id.c_str());
    
    	CompletedMultipartUpload completedMultipartUpload;
    	completedMultipartUpload.AddParts(completedPart1);
    
    	completeMultipartUploadRequest.WithMultipartUpload(completedMultipartUpload);
    
    	auto completeMultipartUploadOutcome =
    			s3_client.CompleteMultipartUpload(completeMultipartUploadRequest);
    
    	if (!completeMultipartUploadOutcome.IsSuccess())
    	{
    		auto error = completeMultipartUploadOutcome.GetError();
    		std::stringstream ss;
    		ss << error << error.GetExceptionName() << ": " << error.GetMessage() << std::endl;
    		return -1;
    	}
    }
  • 相关阅读:
    个人工作总结07
    软件项目第一个Sprint评分
    丹佛机场行李系统没能及时交工的原因
    第一次团队冲刺 5
    第一次团队冲刺4
    第一次团队冲刺3
    第一次团队冲刺2
    第一次团队冲刺 1
    风险评估
    团队开发——第一篇scrum报告
  • 原文地址:https://www.cnblogs.com/sunbines/p/16505895.html
Copyright © 2020-2023  润新知