antd组件upload如何动态添加data?

因为用的antd和七牛,在上传之前需要生成一个token,根据antd的upload的文档可以设置data为一个返回对象的函数,这个对象就会被设置在上传的body里面,我在data函数里面通过和服务端交互生成token, 拿到token之后,请问如何返回呢?
data(file){

Http.generate().then(token) //请问这里如何返回?

}

阅读 6.6k
2 个回答

把这个data中的数据设置为一个state,请求拿到token后,改变state就可以了

data: {
    token: this.state.token
}
Http.generate().then(token => {
    this.setState({token})
})
onImageUpload(files){
  var values = {"bucket":"article"}
    $.ajax({
        url:'https://apisssssss。。。。',
        type: 'GET',
        dataType: 'json',
        data: values,
        success: function(map){
          var uptoken = map.data.token;
          var name = map.data.filename;
          var qiniuDomain = "http://xxxxxxxdn.com/";
          QiniuUploadUtil.uploadFile(files[0], uptoken, name, function(data){
              // 插入到summernote
              ReactSummernote.insertImage( qiniuDomain + data['key'] , $image => {
                            $image.css({
                      display: '',
                      width: '25%'
                  });
                        });
          }, function(){
              alert("上传失败");
          });   
        }
    });
    var QiniuUploadUtil = function(){
          var util = {};
        util.uploadFile = function(file, uptoken,name, success, error) {
          //name是文件名,自己随意定义,aid是我自己增加的属性用于区分文件用户
          var data = new FormData();
          data.append("file", file);
          data.append("key", name);
          data.append("token", uptoken);
            $.ajax({
            data: data,
            type: "POST",
            url: "http://upload.qiniu.com",
            cache: false,
            contentType: false,
            processData: false,
            success: success,
            error: error
          });
        }
        return util;
      }();
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
七牛云问答
子站问答
访问
宣传栏