我是靠谱客的博主 能干缘分,最近开发中收集的这篇文章主要介绍antd upload + button 结合实现文件上传,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目需求:点击提交按钮实现文件的上传。

antd API中的<Upload>组件是选中文件后就可以完成文件的上传,这明显是不符合项目业务需求的。

这里需要注意的就是:点击提交按钮向后台的接口的传参必须是FormData格式的,不能是json格式的,不然获取的originFileObj,用json格式会有数据的丢失,只会剩下uid这个一个属性值了。

const jingDongProps = {
      name: 'file',
      multiple: false,
      accept: '.xls,.xlsx',
      action: '', //上传地址为空
      method: 'post',
      headers: {
        'Accept-Language': window.g_lang,
      },
      onChange: info => {
        if (info.file.status !== 'uploading') {
          jingDongFile = info.file.originFileObj; // 通过originFileObj属性获取完整的file
        }
        if (info.file.status === 'error') {
          message.error(`${info.file.name} 文件上传失败`);
        }
      },
      beforeUpload: (file, fileList) => {
        uploadFileListJi.push(fileList[0]);
        return new Promise((resolve, reject) => {
          const { size } = file;
          if (uploadFileListJi.length > 1) {
            message.error(`不允许多个文件上传!`, 3);
            return reject(false);
          } else {
            if (size > 10 * 1024 * 1024) { // 文件大小不超过10M
              message.error(`${file.name} 文件大小超出限制,请重新上传.`, 2);
              return reject(false);
            }
          }
          return resolve(true);
        });
      },
      onRemove: file => {
        return new Promise((resolve, reject) => {
          this.setState({ uploadFileListJi: [] });
          return resolve(true);
        });
      },
    };
submitJing = () => {
    // 若jingDongFile为空对象,则是没有选中的文件
    if (JSON.stringify(jingDongFile) === '{}') {
      message.error('请选择要上传的文件!');
      return false;
    }
    const values = {
      isSyncToBeidou: 1,
      file: jingDongFile,
    };
    const { dispatch } = this.props;
    // 入参的格式转换成FormData格式
    const formData = new FormData();
    Object.keys(values).forEach(key => {
      formData.append(key, values[key]);
    });
    dispatch({
      type: 'upload/uploadJingDong',
      payload: formData,
      callback: res => {
        if (res.code === 0) {
          message.success('文件上传成功');
        } else {
          message.error(`文件上传失败,${res.msg} `);
        }
      },
    });
  };

 

最后

以上就是能干缘分为你收集整理的antd upload + button 结合实现文件上传的全部内容,希望文章能够帮你解决antd upload + button 结合实现文件上传所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部