本文介绍如何在受版本控制的存储空间(Bucket)中上传文件(Object)。
简单上传
在已开启版本控制的Bucket中,OSS会为新添加的Object自动生成唯一的版本id,并在响应header中通过x-oss-version-id形式返回。在暂停了版本控制的Bucket中,新添加的Object的版本id为“null”,上传同名Object,后一次会覆盖前一次上传的文件内容。OSS保证同一个Object只会有一个版本id为“null”。
以下代码用于简单上传:
const OSS = require('ali-oss');
const client = new OSS({
bucket: '<Your BucketName>',
// region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
region: '<Your Region>',
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>'
});
async function put() {
const result = await client.put('fileName', 'file');
console.log(result.res.headers['x-oss-version-id']); // 查看此次上传object的版本id。
}
put();
简单上传的详细信息请参见PutObject。
追加上传
在受版本控制的Bucket中,仅支持对于当前版本为Appendable类型的Object执行追加(AppendObject)操作,不支持对于历史版本为Appendable类型的Object执行AppendObject操作。
说明
- 对当前版本为Appendable类型的Object执行AppendObject操作时,OSS不会为该Appendable类型的Object生成历史版本。
- 对当前版本为Appendable类型的Object执行PutObject或DeleteObject操作时,OSS会将该Appendable类型的Object保留为历史版本,且该Object不允许继续追加。
- 不支持对当前版本为非Appendable类型的Object(包括Normal Object、Delete Marker等)执行AppendObject操作。
以下代码用于追加上传:
const OSS = require('ali-oss');
const client = new OSS({
bucket: '<Your BucketName>',
// region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
region: '<Your Region>',
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>'
});
async function append() {
await client.append('<file name>', '<upload file>', {
partSize: 100 * 1024
});
}
append();
追加上传的详细信息请参见AppendObject。
分片上传
在受版本控制的Bucket中,调用MultipartUpload方法来完成整个文件的分片上传,OSS会为整个文件生成唯一的版本ID,并在响应header中以x-oss-version-id的形式返回。
以下代码用于分片上传:
const OSS = require('ali-oss');
const client = new OSS({
bucket: '<Your BucketName>',
// region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
region: '<Your Region>',
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>'
});
async function multipartUpload() {
const result = await client.multipartUpload('<file name>', '<upload file>', {
partSize: 100 * 1024
});
// 查看此次上传object的版本id。
console.log(result.res.headers['x-oss-version-id']);
}
multipartUpload();
分片上传的详细信息请参见CompleteMultipartUpload。
在文档使用中是否遇到以下问题
更多建议
匿名提交