我的编程空间,编程开发者的网络收藏夹
学习永远不晚

antdupload上传组件如何获取服务端返回数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

antdupload上传组件如何获取服务端返回数据

antd upload上传组件获取服务端返回数据

项目中使用到antd upload组件上传的问题,按照官网示例,获取不到返回的值,后面上去GitHub找了找解决办法,

在upload返回值中,文件会有一个状态:status为done或者error的时候会返回一个response字段,这个字段里面会包含接口返回的数据,因此只需要坐下过滤就可以拿到值了

我是这样解决的

上面的判断可以过滤掉,哪个是判断多张上传出错的时候  给一个提示,因为antd upload组件多张上传 会走多次beforeupload方法,会提示多次。

回归正题,这样判断之后就可以拿到对应的数据,数据的处理就看自己的了,但是需要注意的就是如果是自己自定义的数据,数据中必须要有uid字段,不然会报错。

还有就是上传的时候会多次走upload方法,每一次都需要给你的filelist赋值,不然后续的upload方法就不会走,也就不会调取接口了.

antd的upload上传组件uploading状态踩坑记

说明

在使用Antd 的 Upload 组件 的onChange()方法中,打印fileList 中的文件状态status 一直是 uploading,无法拿到上传文件后服务端响应的内容,且组件下方不显示文件列表问题

以下是解决方法:

const Dragger = Upload.Dragger;
constructor(props) {
        super(props);
        this.state = {
            fileList: [],
        };
    }
<Dragger
                        listType={"picture"}
                        action={uploadUrl}
                        accept={acceptPictype}
                        disabled={upLoadDisabled}
                        beforeUpload={() => {
                        }}
                        fileList={isScanSuccess?[]:this.state.fileList}
                        onChange={
                            (data) => {
                                console.log(data)
                                const { fileList, file } = data;
                             		//自己的逻辑
                                    this.setState({ fileList: [...fileList] });//这段代码放在处理逻辑的最后面  
                                }                           
                            }
                        }
                    >
在github[解答](https://github.com/ant-design/ant-design/issues/2423)上此问题解答:

对于受控模式,你应该在 onChange 中始终 setState fileList,保证所有状态同步到 Upload 内。类似这里的写法:http://ant.design/components/upload/#components-upload-demo-fileList

// good  正确写法

onFileChange(fileList) {
  if ( ... ) {
    ...
  } else {
    ...
  }
  // always setState
  this.setState({ fileList: [...fileList] });
}
<Upload fileList={this.state.fileList} onChange={this.onFileChange} />
// bad 写法
onFileChange(fileList) {
  if ( ... ) {
    this.setState({ fileList: [...fileList] });
  } else {
    ...
  }
}
<Upload fileList={this.state.fileList} onChange={this.onFileChange} />
建议研习受控组件概念:https://facebook.github.io/react/docs/forms.html#controlled-components
注意需要克隆 fileList 以保障 Upload 能感知数组变化。
- this.setState({ fileList });
+ this.setState({ fileList: [...fileList] });

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

antdupload上传组件如何获取服务端返回数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

antdupload上传组件如何获取服务端返回数据

这篇文章主要介绍了antdupload上传组件如何获取服务端返回数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-12

阿里云服务器如何获取mysql数据库文件

随着互联网的不断发展,数据的重要性越来越明显,MySQL数据库作为一种常用的数据存储和管理工具,被广泛应用在各种业务场景中。在阿里云服务器上,如何获取MySQL数据库文件呢?本文将为您详细介绍。获取MySQL数据库文件的方法:使用MySQL命令行工具:在阿里云服务器上,可以通过以下步骤使用MySQL命令行工具获取
阿里云服务器如何获取mysql数据库文件
2023-11-02

如何在阿里云上调取服务器镜像数据文件

本文将介绍如何在阿里云上调取服务器镜像数据文件的方法。无论是新创建的实例还是已经存在的实例,都可以通过简单的操作来获取服务器的镜像数据文件。正文:1.登录阿里云控制台首先,打开浏览器并访问阿里云官方网站(https://www.aliyun.com/),然后点击右上角的“登录”按钮,输入您的账号和密码,成功登录后
如何在阿里云上调取服务器镜像数据文件
2024-01-01

织梦上传服务器后出现数据连接失败是怎么回事如何解决

进入data文件夹里的common.inc.php进行修改数据库想对应的数据 复制代码代码如下: //数据库连接信息 $cfg_dbhost = 'localhost'; $cfg_dbname =www.cppcns.com 'dedec
2022-06-12

编程热搜

目录