开发者社区> 问答> 正文

oss js sdk callback支持自定义参数吗

oss js sdk callback支持自定义参数吗  如何设置?
主要是想用自定义参数把原始文件名传到callback去

展开
收起
百炼钢 2016-12-16 09:26:31 5772 0
2 条回答
写回答
取消 提交回答
  • Reoss js sdk callback支持自定义参数吗
    文档我早看过了
    但是不知道在js sdk中应该怎么把 { "x:var1":"value1", "x:var2":"value2" } 传过去
    github上的文档/源码/例子也都看过  没有找到相关内容

    -------------------------

    Reoss js sdk callback支持自定义参数吗
    问题未解决

    -------------------------

    Reoss js sdk callback支持自定义参数吗
    继续求答案
    2016-12-16 15:03:29
    赞同 展开评论 打赏
  • 回 楼主(百炼钢) 的帖子
    你指的是oss上传中的callback功能把?可以参考这个文档里对callback的说明使用其中在Header中携带参数的方式来实现,js sdk 接口中option参数可以包含header字段。以下是可以参考的oss callback功能说明和js sdk 参数的说明:
    https://help.aliyun.com/document_detail/31989.html?spm=5176.doc31961.6.874.ktSWhX
    https://github.com/ali-sdk/ali-oss#putname-file-options

    -------------------------

    回 4楼(百炼钢) 的帖子
    根据callback文档里的说明,使用js sdk接口的option参数,这个参数可以追加header字段,就是之前发的那个github的地址里有说明这个字段,以下sample代码方便你理解(注:sample代码没有经过严格测试仅用来参考),其中your_var_1和your_var_2应该就是你需要的参数字段,如下:

    var co = require('co');
    var OSS = require('ali-oss');
    var urlutil = require('url');

    var client = new OSS({
      region: 'xxxx',
      accessKeyId: 'xxxx',
      accessKeySecret: 'xxxx'
    });

    encodeCallback = function (cb) {
      var url = urlutil.parse(cb.url);
      url.query = cb.query;

      var json = {
        callbackUrl: url.format(),
        callbackBody: cb.body,
        callbackBodyType: cb.contentType || 'application/x-www-form-urlencoded'
      };

      return new Buffer(JSON.stringify(json)).toString('base64');
    };

    co(function* () {
      client.useBucket('your_bucket');
      var result = yield client.put('object_name', 'local_file_path',
                                    {headers: {
                                        'x-oss-callback': encodeCallback({
                                            url: 'http://call_back_url:xxx/xxx',
                                            query: {your_var_1: 'your_var_value_1', your_var_2: 'your_var_value_2'},
                                            body: 'bucket=${bucket}&object=${object}'
                                    })
                                        }
                                    });
      console.log(result);
    }).catch(function (err) {
      console.log(err);
    });
    2016-12-16 14:16:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
一个跨平台的云服务SDK需要什么 立即下载
云存储之OSS实战进阶分享 立即下载
OSS运维进阶实战手册 立即下载