本文介绍如何拷贝文件(Object)。拷贝文件时,您可以根据实际设置目标文件的HTTP头以及自定义目标文件的元信息。

说明 关于文件元信息的更多信息,请参见开发指南中的 管理文件元信息

以下代码用于在同一个Bucket中拷贝文件。

const OSS = require('ali-oss');
const client = new OSS({
  // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourRegion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret',
  // 填写Bucket名称。
  bucket: 'examplebucket',
  // 设置是否启用HTTPS。设置secure为true时,表示启用。
  //secure: true
})
// 拷贝同一个Bucket中的文件。
// 填写拷贝后和拷贝前的文件完整路径。文件完整路径中不能包含Bucket名称。
client.copy('dstexampleobject.txt', 'srcexampleobject.txt',
// 设置目标文件的HTTP头和自定义目标文件的元信息。
//{
    // 指定headers参数,设置目标文件的HTTP头。如果未指定headers参数,则目标文件与源文件的HTTP头相同,即拷贝源文件的HTTP头。
    //headers:{
        //'Cache-Control': 'no-cache',
    //},
    // 指定meta参数,自定义目标文件的元信息。如果未指定meta参数,目标文件与源文件的元信息相同,即拷贝源文件的元信息。
    //meta:{
        //location: 'hangzhou',
        //year: 2015,
        //people: 'mary'
    //}
//}
).then((res) => {
    console.log(res);
}).catch(e => {
  console.log(e);
})

以下代码用于在同一个Region下的两个不同Bucket中拷贝文件。

const OSS = require('ali-oss')

const client = new OSS({
  // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourRegion',
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret',
  // 填写目标Bucket名称。
  bucket: 'dstexamplebucket',
});

async function copy () {
  try {
    // 拷贝同一个Region下的两个不同Bucket中的文件时,源文件的地址格式为'/bucketname/objectname'。
    const result = await client.copy('dstexampleobjectnew.txt', '/srcexamplebucket/srcexampleobject.txt',
    // 设置目标文件的HTTP头和自定义目标文件的元信息。
    //{
        // 指定headers参数,设置目标文件的HTTP头。如果未指定headers参数,则目标文件与源文件的HTTP头相同,即拷贝源文件的HTTP头。
        //headers:{
            //'Cache-Control': 'no-cache',
        //},
        // 指定meta参数,自定义目标文件的元信息。如果未指定meta参数,目标文件与源文件的元信息相同,即拷贝源文件的元信息。
        //meta:{
            //location: 'hangzhou',
            //year: 2015,
            //people: 'mary'
        //}
    //}
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

copy()