react中antd Upload手动上传的示例

 更新时间:2022年04月22日 10:36:52   作者:可乐汽水  
本文主要介绍了react中antd Upload手动上传的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

情况介绍

在antd官方提供的upload组件案例中,都使用了action属性直接上传,唯一手动上传的一个例子(如下图)也不够好用,可能不能满足项目的需求,所以我们需要对其进行一些修改,并加入一些别的方法。

我们经常会使用antd的form表单上传数据,有时就会需要同时上传图片。所以在这里我们需要实现的是,前端页面上传多张图片时,先存储在前端,当表单上传时,和表单数据一起上传到后端。

实现方法

1.初始化

首先,在最前面引入upload组件,

import { Button, Form, Input, message, Upload} from 'antd';

然后在form中加入upload,

this.state = {
      previewVisible: false,
      previewImage: '',
      fileList: [] //用来存图片列表
    };
<Form.Item
            name="files"
          >
            <Upload
              listType="picture-card"
              headers={{ 'content-type': 'multipart/form-data' }}
              fileList={fileList}  //存已上传到页面的图片列表
              onPreview={this.handlePreview} //点击文件链接或预览图标时的回调
              onChange={this.handleChange}  //删除或者新上传时的回调
              beforeUpload={() => false}  //上传文件之前的钩子,参数为上传的文件,若返回 `false` 则停止上传。我们采用手动上传。
            >
              {fileList.length >= 1 ? null : (
                <div>
                  <PlusOutlined />
                  <div style={{ marginTop: 8 }}>上传</div>
                </div>
              )}
            </Upload>
          </Form.Item>
handlePreview = (file) => {
    this.setState({
      previewImage: file.thumbUrl,
      previewVisible: true
    });
  };
handleChange = ({ fileList }) => {
    this.setState({ fileList });
  };

2.上传表单和图片

这里我们统一使用json格式进行前后端的交互。由于在form表单中的图片格式是对象,但是我们不需要对象格式,我们需要的是fileList数组,所以,我们需要手动将每一张图片其加入到formData中。

onFinish = (values) => {
    const { fileList } = this.state;
    const formData = new FormData();
      delete values.files; //删除表单内的图片对象
      for (const key in values) {
        if (values[key] !== undefined && values[key] !== null) {
          formData.append(key, values[key]);
        }
      } //对于其他表单对象,可以直接上传
      fileList.forEach((item) => formData.append('files', utils.transferFile(item.thumbUrl)));
  };

3.图片回显

成功上传图片后,由于我这里后端给到前端的图片格式是base64,图片不能直接显示,但是还要考虑到,在编辑表单时,图片可能还会再上传,以下是我们的做法。 componentDidMount大家都知道是react生命周期在组件挂载在之后的函数吧,我们经常会将数据的一些预处理放在这里。

下面,我们首先需要调接口,获取后台数据。然后修改数据格式,将图片格式改成base64显示的格式,然后加入到fileList中,就可以将已经上传的图片重新加入到Upload组件中,实现回显。并且,后期再次上传时,也是可以的。

  let { image } = res.data.data;
  let imgArr = image.map((item) => {
    return { thumbUrl: 'data:image/png;base64,' + item };
  });
  this.setState({
    fileList: imgArr
  });

到此这篇关于react中antd Upload手动上传的示例的文章就介绍到这了,更多相关react antd Upload手动上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React和Vue实现文件下载进度条

    React和Vue实现文件下载进度条

    本文主要介绍了React和Vue实现文件下载进度条,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • React网络请求发起方法详细介绍

    React网络请求发起方法详细介绍

    在编程开发中,网络数据请求是必不可少的,这篇文章主要介绍了React网络请求发起方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • 详解如何在React中执行条件渲染

    详解如何在React中执行条件渲染

    在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨如何在React中实现条件渲染,并通过示例代码演示常见的用法,需要的朋友可以参考下
    2025-01-01
  • 在react项目中webpack使用mock数据的操作方法

    在react项目中webpack使用mock数据的操作方法

    这篇文章主要介绍了在react项目中webpack使用mock数据的操作方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • 谈谈React中的Render Props模式

    谈谈React中的Render Props模式

    这篇文章主要介绍了谈谈React中的Render Props模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 列表页常见hook封装实例

    列表页常见hook封装实例

    这篇文章主要为大家介绍了列表页常见的hook封装示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • react实现图片懒加载的三种方式

    react实现图片懒加载的三种方式

    本文主要介绍了react实现图片懒加载的三种方式,包括利用浏览器原生的loading="lazy"属性,使用react-lazyload库以及通过IntersectionObserver API手动实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • React组件、状态管理、代码优化的技巧

    React组件、状态管理、代码优化的技巧

    文章总结了React组件设计、状态管理、代码组织和优化的技巧,它涵盖了使用Fragment、props解构、defaultProps、key和ref的使用、渲染性能优化等方面
    2024-11-11
  • React自定义Hook的实现

    React自定义Hook的实现

    自定义Hook是一种自定义函数,它封装了React Hook的逻辑,并通过命名约定来使其可重用,本文主要介绍了React自定义Hook的实现,感兴趣的可以了解一下
    2023-11-11
  • 浅谈React双向数据绑定原理

    浅谈React双向数据绑定原理

    在 React中是不存在双向数据绑定的机制的,需要我们自己对其进行实现。本文主要介绍一下React双向数据绑定,感兴趣的可以了解一下
    2021-11-11

最新评论