ant design upload 版本:2.8.3 在进行服务器上传成功后response一直为undefined,红包悬赏

1、按照官网upload配置,对图片上传成功,但解析onChangge时候,上传的图片的response一直为undefined
2、想要的结果:react用了dva脚手架,所以数据状态统一在model内管理,所以需要对response进行解析拼装数据
3、代码:

<div className="clearfix">
  <Upload
    name="uploadFile"
    action="/jsharer-web/Pic/upload"
    listType="picture-card"
    fileList={fileList}
    onPreview={handlePreview}
    onChange={handleChange}
    >
    {fileList.length >= 3 ? null : uploadButton}
  </Upload>
  <Modal visible={previewVisible} footer={null} onCancel={handleCancel}>
    <img alt="example" style={{ width: '100%' }} src={previewImage} />
  </Modal>
</div>
//采取官网配置方式解析file和filelist
function handleChange(info) {
    console.log("info");
    console.log(info);
    let fileList = info.fileList;
    console.log("fileList");
    console.log(fileList);
    fileList = fileList.slice(-2);
    fileList = fileList.map((file) => {
    console.log(file.response); //控制台输出undefined
      if (file.response) {
        console.log("#");//因为undefined所以进不来
        file.url = file.response.url;
      }
      return file;
    });
    fileList = fileList.filter((file) => {
      if (file.response) {
        return file.response.status === 'success';
      }
      return true;
    });
    //同步model内fileList数据
    // onChangeFileList(fileList);
  };

4、截图数据
//上传图片成功返回数据
clipboard.png

//fileList 控制台返回数据
clipboard.png

阅读 6.9k
2 个回答

已解决, 可以看这个github上的这个issue
https://github.com/ant-design...
简单来说就是

对于受控模式,你应该在 onChange 中始终 setState fileList,保证所有状态同步到 Upload 内
新手上路,请多包涵

你这种方式是做成可控组件,调用onChange方法的时候,有更新就要改变fileList的状态,不然onChange方法只会被调用一次。类似代码可以写成:

onChange(info) {
    const status = info.file.status;
    if(status === 'done') {
        //处理response返回值
        console.log(info);
    }
    handleFileList(info.fileList) //将新的fileList替换之前的状态
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题