分片上传接口 融合接口 功能说明 分片上传步骤较多,包括初始化、文件切片、各个分片上传、完成上传。为了简化分片上传,可以使用TransferManager类的UploadFile接口进行分片上传。 代码示例 cpp bool S3Demo::TranferUpload() { const Aws::String objectname " "; const Aws::String localpath " "; std::sharedptr executor Aws::MakeShared ("executor", 25); Aws::Transfer::TransferManagerConfiguration transferConfig(executor.get()); transferConfig.s3Client s3client; // 默认分片大小5MB // transferConfig.bufferSize Aws::Transfer::MB5; // 设置公共读 // transferConfig.putObjectTemplate.SetACL(Aws::S3::Model::ObjectCannedACL::publicread); // transferConfig.createMultipartUploadTemplate.SetACL(Aws::S3::Model::ObjectCannedACL::publicread); std::sharedptr requestPtr(nullptr); transferConfig.downloadProgressCallback [](const Aws::Transfer::TransferManager, const std::sharedptr & handle) { std::cout Upload Progress: " (handle>GetBytesTransferred() 100.0 / handle>GetBytesTotalSize()) GetBytesTransferred() transferManager Aws::Transfer::TransferManager::Create(transferConfig); Aws::String contentType "binary/octetstream"; Aws::Map metadata; requestPtr transferManager>UploadFile(localpath, " ", objectname, contentType, metadata); requestPtr>WaitUntilFinished(); // Check status if (requestPtr>GetStatus() Aws::Transfer::TransferStatus::COMPLETED) { if (requestPtr>GetBytesTotalSize() requestPtr>GetBytesTransferred()) { std::cout << "success" << std::endl; } else { std::cout << "failed" << std::endl; } } else { std::cout << "failed" << std::endl; } return true; }
来自: