input = file 实现上传文件

input = file 实现上传文件使用input=file实现文件上传功能,如果点击提交按钮,提交表单并上传选中的文件:<FormItemlabel=”上传简历”><divclassName=”section-pushInChannel-fileInput”><inputid=”file”onChange={this.handleFileChange}t…

大家好,又见面了,我是你们的朋友全栈君。

使用input = file实现文件上传功能, 如果点击提交按钮,提交表单并上传选中的文件:
在这里插入图片描述

<FormItem label="上传简历">
    <div className="section-pushInChannel-fileInput">
        <input id="file" onChange={this.handleFileChange} type="file"  name="file" multiple="multiple"></input>
        <div className="fileTip"></div>
    </div>
</FormItem>

handleFileChange = (e) => {
      const input = e.target;
       const files = e.target.files;
       if(files && files[0]) {
           const file = files[0];
           if(file.size > 1024 * 1024 *3) {
               fileTip.innerHTML = '文件大小不能超过3M!';
               input.value = '';
               return false;
           } else {
               fileTip.innerHTML = '';
               formData.append("file", file); 
           }
       }
    }

handleSubmitBtnClick = (e) => {
        const { form } = this.props;
        e.preventDefault();
        form.validateFields((err, values) => {
            if(!fileInput.value) {
                fileTip.innerHTML = '请选择您要上传的简历';
            }
            if(!err) {
                if(!fileInput.value) {
                    return;
                }
                Object.keys(values).forEach((key) => {
                    formData.append(key, values[key]);
                });
                axios.post('http://120.77.204.211:9091/api/push', formData).then(res => {
                    if(res.data.success && res.data.retCode === 0) {
                        // 成功
                        this.setState({
                            visible: true,
                        });
                        codeTip.innerHTML="";
                    } else {
                        // 失败
                        formData = new FormData(); // 每次失败要重置formdata对象
                        formData.append('file', fileInput.files[0]);
                        codeTip.innerHTML="您输入的验证码错误";
                    }
                })
            }
        })
    }

注意:

  1. 提交包含文件的表单时,需要使用FormData对象,将要提交的字段append,作为请求的参数;
  2. 可以通过fileInput.value来清空上传的文件;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160384.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月16日 上午9:46
下一篇 2022年7月16日 上午9:46


相关推荐

  • 分布式架构与SOA

    分布式架构与SOA分布式系统 nbsp nbsp nbsp nbsp 分布式系统是一个硬件或软件组件分布在不同的网络计算机上 彼此之间仅仅通过消息传递和协调的系统 nbsp nbsp nbsp nbsp nbsp nbsp 简单来说 就是一群独立计算机集合共同对外提供服务 但是对于系统用户来说 就像是一台计算机在提供服务一样 分布式意味着可以采用更多的普通计算机组成分布式集群对外提供服务 计算机越多 CPU 内存 存储资源等也就越多 能够处理的并发访问量也就越大 nbsp

    2026年3月16日
    2
  • java jsonfield_定制序列化之@JSONField的使用

    java jsonfield_定制序列化之@JSONField的使用fastjson 支持多种方式定制序列化 通过 JSONField 定制序列化通过 JSONType 定制序列化通过 SerializeFil 定制序列化通过 ParseProcess 定制反序列化 JSONField 的使用 1 利用 JSONField 的 format 配置日期格式化 这个在上一篇文章有所展示 2 利用 JSONField 的 serialize 指定字段不序列化 packagecom an

    2026年3月16日
    2
  • LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数

    LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数LARGE_INTEGERLARGE_INTEGER是union,表示64位有符号整数值。其定义如下:    typedefunion_LARGE_INTEGER{     struct{                 DWORDLowPart;                 LONGHighPart;               };

    2022年7月16日
    27
  • 关于easy的短语(facemock框架)

    作为一个月薪3000的屌丝民工,今天也开始写自己的微博了,打发一下dota之外的时光。写了一年的flex,虽然很是熟练,但是有啥用呢。新版flash的普及上不去,旧版的渲染太慢。还是改行好了。最近开始研究有啥好的东西,之前看了一下unity3d,但是发现自己得先去学3dmax,可是看了3dmax发现高手实在太多了。要学好也不知道要多久,况且自己的美术功底实在太差。专研一下后台吧,发现自己编码解码不

    2022年4月12日
    48
  • 怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    2026年3月12日
    1
  • AI工作流+MCP:零代码打造最强AI Agent,一键接入海量工具

    AI工作流+MCP:零代码打造最强AI Agent,一键接入海量工具

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号