广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >react怎么实现文件上传
  • 360
分享到

react怎么实现文件上传

React 2023-05-14 21:05:33 360人浏览 泡泡鱼
摘要

本教程操作环境:windows10系统、React18.0.0版、Dell G3电脑。react怎么实现文件上传?react使用antd实现手动上传文件(提交表单)前言:最近在做一个后台管理项目涉及到上传文件,使用antd里的Upload实

react怎么实现文件上传

教程操作环境:windows10系统、React18.0.0版、Dell G3电脑。

react怎么实现文件上传?

react使用antd实现手动上传文件(提交表单)

前言:最近在做一个后台管理项目涉及到上传文件,使用antd里的Upload实现上传文件。记录一下遇到的问题和坑。

1.要实现的效果

53515ac575a5a054f6db7d1b7e965ec.jpg

我要实现的效果就是点击上传文件,选择完文件后点击ok(也就是提交表单后在上传)其实就是手动上传文件。下面我来介绍一下我的做法和我遇到的一些坑。

2.实现步骤

1.引入所需antd的部件

import { Table, Button, Modal, FORM, Input, Upload, Icon, notification } from 'antd';

这个是表单的

 <Modal
          title="文件上传"
          visible={this.state.visible}
          onOk={this.handleOk} //点击按钮提价表单并上传文件
          onCancel={this.handleCancel}
        >
          <Form layout="vertical" onSubmit={this.handleSubmit}>
            <Form.Item>
              <div  key={Math.random()}>//点击关闭在次打开还会有上次上传文件的缓存
                <Upload {...props}>
                  <Button type="primary">
                    <Icon type="upload" />选择文件
                 </Button>
                </Upload>
 
              </div>
            </Form.Item>
            <Form.Item label="文件名(可更改)">
              {getFieldDecorator('filename', {
                // initialValue:this.state.defEmail,
                rules: [
                  {
                    message: '请输入正确的文件名',
                    // pattern: /^[0-9]+$/,
                  },
                  {
                    required: true,
                    message: '请输入文件名',
                  },
                ],
              })(<Input />)}
            </Form.Item>
            <Form.Item label="描述(选填)">
              {getFieldDecorator('describe', {
 
                rules: [
                  {
                    message: '描述不能为空',
                  },
                  {
                    required: false,
                    message: '请输入描述',
                  },
                ],
              })(<TextArea />)}
            </Form.Item>
            <Form.Item label="文件类型">
              {getFieldDecorator('filetype', {
                rules: [
                  {
                    message: '文件类型',
                  },
                  {
                    required: true,
                    message: '文件类型',
                  },
                ],
              })(<Input disabled={true} />)}
            </Form.Item>
          </Form>
        </Modal>

下面的代码是Upload的props

  const props = {
      showUploadList: true,
      onRemove: file => {
        this.setState(state => {
          const index = state.fileList.indexOf(file);
          const newFileList = state.fileList.slice();
          newFileList.splice(index, 1);
          return {
            fileList: newFileList,
          };
        });
      },
      beforeUpload: file => {
        console.log(file)
        let { name } = file;
        var fileExtension = name.substring(name.lastIndexOf('.') + 1);//截取文件后缀名
        this.props.form.setFieldsValue({ 'filename': name, 'filetype': fileExtension });//选择完文件后把文件名和后缀名自动填入表单
        this.setState(state => ({
          fileList: [...state.fileList, file],
        }));
        return false;
      },
      fileList,
    };

下面是重点提交表单并上传文件

handleOk = e => {//点击ok确认上传
    const { fileList } = this.state;
    let formData = new FormData();
    fileList.forEach(file => {
      formData.append('file', file);
    });
 
    this.props.form.validateFields((err, values) => { //获取表单值
      let { filename, filetype, describe } = values;
      formData.append('name', filename);
      formData.append('type', filetype);
      formData.append("dir", "1");
      if(describe==undefined){
        formData.append('description',"");
      }else{
        formData.append('description',describe);
      }
      
      UploadFile(formData).then(res => { //这个是请求
        if (res.status == 200 && res.data != undefined) {
          notification.success({
            message: "上传成功",
            description: res.data,
          });
        } else {
          notification.error({
            message: "上传失败",
            description: res.status,
          });
        }
      })
      this.setState({
        visible: false
      });
 
    })
  };

注意我用的axiOS,post必须使用formData.append("接口参数名",“要传的值”);如果不想用axios还可以用别的请求

fetch(url, { //fetch请求
        method: 'POST',
        body: formData,
    })
 
 
 
 
 
 
      axios({ //axios
        method: 'post',
        url: url,
        data: formData,
        headers:{ //可加可不加
          'Content-Type': 'multipart/form-data; boundary=---- 
           WEBKitFormBoundary6jwpHyBuz5iALV7b'
        }
    })
    .then(function (response) {
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });

这样就能实现手动上传文件了。

3.遇到的坑

第一次选择完文件,点击上传。第二次在打开Model发现上回的文件列表还在,我在网上找的方法是给upload及一个key值但只有点击ok后第二次打开Model缓存才会消失,但是点击canel还会存在。

<div key={Math.random()}>
                <Upload  {...props}>
                  <Button type="primary">
                    <Icon type="upload" />选择文件
                 </Button>
                </Upload>
 
              </div>

最好的方法就是this.setState把state里文件列表置空

 this.props.form.resetFields()//添加之前把input值清空
    this.setState({
      visible: true,
      fileList: [] //把文件列表清空
    });

也可以给Modal加一个 destroyOnClose 属性 关闭时销毁 Modal 里的子元素

以上就是react怎么实现文件上传的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: react怎么实现文件上传

本文链接: https://www.lsjlt.com/news/206780.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • react怎么实现文件上传
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react怎么实现文件上传?react使用antd实现手动上传文件(提交表单)前言:最近在做一个后台管理项目涉及到上传文件,使用antd里的Upload实...
    99+
    2023-05-14
    React
  • react如何实现文件上传
    本篇内容介绍了“react如何实现文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react实现文件上传的方法:1、通过“import...
    99+
    2023-07-04
  • React+Koa实现文件上传的示例
    目录背景 服务端依赖 后端配置跨域后端配置静态资源访问 使用 koa-static-cache后端配置requst body parse 使用 koa-bodyparser前端依赖 ...
    99+
    2022-11-12
  • java怎么实现文件上传
    (1)准备好前台页面Upload.html表单 action=上传文件后台接口 method=“post”enctype=“multipart/form-data”文件输入框 (2)加入相应的jar包免费在线视频教程分...
    99+
    2017-05-26
    java 实现 文件上传
  • layui怎么实现文件上传
    这篇文章将为大家详细讲解有关layui怎么实现文件上传,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下<!DOCTYPE html> &l...
    99+
    2022-10-19
  • React文件分段上传实现方法详解
    目录原理方案antd Upload文件分片MD5发送分片请求显示上传进度最近做了大文件(文件夹)分片上传的需求,记录一下。 原理 前端进行大文件分片上传的方案几乎都是利用Blob.p...
    99+
    2022-11-13
    React文件分段上传 React文件上传
  • golang大文件上传怎么实现
    在Go语言中,可以使用`net/http`包来实现大文件上传。下面是一个简单的示例: package main import ( ...
    99+
    2023-10-26
    golang
  • C#怎么实现FTP上传文件
    本文小编为大家详细介绍“C#怎么实现FTP上传文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么实现FTP上传文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通过用FTP进行上传文件,首先要实现建立F...
    99+
    2023-06-30
  • JavaWeb中怎么实现文件上传
    这期内容当中小编将会给大家带来有关JavaWeb中怎么实现文件上传,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。引入依赖当然在引入依赖之前我们需要先创建一个被Maven管理的Web Project,创建方...
    99+
    2023-06-19
  • Java selenium上传文件怎么实现
    本篇内容主要讲解“Java selenium上传文件怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java selenium上传文件怎么实现”吧!下载和安装AutoI...
    99+
    2023-06-30
  • Python怎么实现上传Minio文件
    本篇内容介绍了“Python怎么实现上传Minio文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境依赖安装minio以及oss2依赖p...
    99+
    2023-06-25
  • 如何实现react显示文件上传进度demo
    这篇文章给大家分享的是有关如何实现react显示文件上传进度demo的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在...
    99+
    2023-06-14
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
  • React+Node实现大文件分片上传、断点续传秒传思路
    目录1、整体思路2、实现步骤2.1 文件切片加密2.2 查询上传文件状态2.3 秒传2.4 上传分片、断点续传2.5 合成分片还原完整文件3、总结4、后续扩展与思考5、源码1、整体思...
    99+
    2022-11-13
  • 怎样实现WCF上传文件
    今天就跟大家聊聊有关怎样实现WCF上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在优酷上我想上传一段视频,你有想过会台是怎么实现的吗?这里我就为大家分析一下关于利用WCF上传...
    99+
    2023-06-17
  • 怎么设置cookie实现文件上传
    这篇文章主要讲解了“怎么设置cookie实现文件上传”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置cookie实现文件上传”吧!文件上传实例HTML设置上传文件的表单需要设置&nbs...
    99+
    2023-06-08
  • Node.js+express怎么实现上传大文件
    这篇“Node.js+express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js+expr...
    99+
    2023-06-17
  • Springboot文件上传功能怎么实现
    这篇文章主要介绍了Springboot文件上传功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Springboot文件上传功能怎么实现文章都会有所收获,下面我们一起来看看吧。1.新建文件上传页面在st...
    99+
    2023-07-06
  • java form-data上传文件怎么实现
    在Java中,可以使用Apache HttpClient库来实现form-data形式的文件上传。下面是一个简单的示例代码: imp...
    99+
    2023-10-30
    java
  • jquery中Form怎么实现文件上传
    这篇文章给大家分享的是有关jquery中Form怎么实现文件上传的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。①先是html<a href="javas...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作