使用Amazon开发工具包将分段上传到 Amazon S3 Glacier 文件库 - Simple Storage Service(Amazon S3)Glacier
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用Amazon开发工具包将分段上传到 Amazon S3 Glacier 文件库

以下代码示例显示如何创建分段上传,请访问 Amazon S3 Glacier 文件库。

JavaScript
SDK f JavaScript or V2
注意

还有更多 GitHub。查找完整示例,学习如何在 Amazon 代码示例存储库中进行设置和运行。

创建 1 兆字节的 Buffer 对象块的分段上传。

// Create a new service object and some supporting variables var glacier = new AWS.Glacier({apiVersion: '2012-06-01'}), vaultName = 'YOUR_VAULT_NAME', buffer = new Buffer(2.5 * 1024 * 1024), // 2.5MB buffer partSize = 1024 * 1024, // 1MB chunks, numPartsLeft = Math.ceil(buffer.length / partSize), startTime = new Date(), params = {vaultName: vaultName, partSize: partSize.toString()}; // Compute the complete SHA-256 tree hash so we can pass it // to completeMultipartUpload request at the end var treeHash = glacier.computeChecksums(buffer).treeHash; // Initiate the multipart upload console.log('Initiating upload to', vaultName); // Call Glacier to initiate the upload. glacier.initiateMultipartUpload(params, function (mpErr, multipart) { if (mpErr) { console.log('Error!', mpErr.stack); return; } console.log("Got upload ID", multipart.uploadId); // Grab each partSize chunk and upload it as a part for (var i = 0; i < buffer.length; i += partSize) { var end = Math.min(i + partSize, buffer.length), partParams = { vaultName: vaultName, uploadId: multipart.uploadId, range: 'bytes ' + i + '-' + (end-1) + '/*', body: buffer.slice(i, end) }; // Send a single part console.log('Uploading part', i, '=', partParams.range); glacier.uploadMultipartPart(partParams, function(multiErr, mData) { if (multiErr) return; console.log("Completed part", this.request.params.range); if (--numPartsLeft > 0) return; // complete only when all parts uploaded var doneParams = { vaultName: vaultName, uploadId: multipart.uploadId, archiveSize: buffer.length.toString(), checksum: treeHash // the computed tree hash }; console.log("Completing upload..."); glacier.completeMultipartUpload(doneParams, function(err, data) { if (err) { console.log("An error occurred while uploading the archive"); console.log(err); } else { var delta = (new Date() - startTime) / 1000; console.log('Completed upload in', delta, 'seconds'); console.log('Archive ID:', data.archiveId); console.log('Checksum: ', data.checksum); } }); }); } });

有关 Amazon 软件开发工具包开发人员指南和代码示例的完整列表,请参阅 将 S3 Glacier 与结合使用Amazon开发工具包。本主题还包括有关入门的信息以及有关先前的软件开发工具包版本的详细信息。