本文介绍如何拷贝文件(Object)。

拷贝文件时,对文件元信息的处理有两种选择:

  • 如果没有指定meta参数,则与源文件相同,即拷贝源文件的元信息。
  • 如果指定了meta参数,则使用新的元信息覆盖源文件的元信息。

以下代码用于拷贝同一个Bucket内的文件:

let OSS = require('ali-oss');
var client = new OSS({
  bucket: 'bucket',
  region: 'oss-cn-xxx',
  accessKeyId: 'ak',
  accessKeySecret: 'aksecret',
//   secure: true
})
// 拷贝同一个Bucket内的文件。
client.copy('test_copy', 'test').then((res) => {
  console.log(res);
}).catch(e => {
  console.log(e);
})

以下代码用于拷贝同一个Region下的两个不同Bucket内的文件:

let OSS = require('ali-oss')

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>',
});

async function copy () {
  try {
     // 拷贝同一个Region下的两个不同Bucket内的文件时,源Object名字应为 '/bucket/object' 的形式。
    let result = await client.copy('to', '/from-bucket/from');
    console.log(result);

    // 拷贝元信息。
    let result = await client.copy('to', 'from');
    console.log(result);

    // 覆盖元信息。
    let result = await client.copy('to', 'from', {
      meta: {
        year: 2015,
        people: 'mary'
      }
    });
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}