全部产品
Search
文档中心

对象存储 OSS:Node.js上传回调

更新时间:Oct 28, 2024

对象存储OSS在完成文件(Object)上传时可以提供回调(Callback)给应用服务器。您只需要在发送给OSS的请求中携带相应的Callback参数,即可实现回调。

说明

callback的构建支持发送callbackSNI等设置,详细信息可参见Callback

注意事项

在配置上传回调之前,请确保您已了解该功能。更多信息,请参见上传回调

示例代码

以下代码用于在上传本地文件examplefile.txt到目标存储空间examplebucket中的exampleobject.txt文件时使用上传回调(callback)。

const OSS = require("ali-oss");

varpath = require("path");

const client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: "yourregion",
  // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // 填写Bucket名称。
  bucket: "examplebucket",
});

const options = {
  callback: {
    // 设置回调请求的服务器地址,例如http://oss-demo.aliyuncs.com:23450。
    url: "http://oss-demo.aliyuncs.com:23450",
    //(可选)设置回调请求消息头中Host的值,即您的服务器配置Host的值。
    //host: 'yourCallbackHost',
    // 设置发起回调时请求body的值。
    body: "bucket=${bucket}&object=${object}&var1=${x:var1}&var2=${x:var2}",
    // 设置发起回调请求的Content-Type。
    contentType: "application/x-www-form-urlencoded",
    // 客户端发起回调请求时,OSS是否向通过callbackUrl指定的回源地址发送服务器名称指示SNI(Server Name Indication)
    callbackSNI: true,
    // 设置发起回调请求的自定义参数。
    customValue: {
      var1: "value1",
      var2: "value2",
    },
  },
};

async function put() {
  try {
    // 填写Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
    // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    let result = await client.put(
      "exampleobject.txt",
      path.normalize("/localpath/examplefile.txt"),
      options
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

相关文档

  • 关于上传回调的完整示例代码,请参见GitHub示例

  • 关于上传回调的API接口说明,请参见Callback

  • 关于上传回调的错误原因和解决方法,请参见203错误

  • 关于回调功能的详细参数配置和注意事项,请参见Callback