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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spidermonkey_gomonkey

    Spidermonkey_gomonkey参考如下:最近升级了系统到MacOSX10.10并且更新了XCode6.1和iOS8.1之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。需要重新编译查阅了下资料,按照如下步骤,并做了些注释和改动1.http://sourceforge.net/projects/lame/files/lame/3.9…

    2022年10月16日
    2
  • 阿里云ssl证书过期_阿里云acp证书含金量

    阿里云ssl证书过期_阿里云acp证书含金量阿里云提示内容如下:【阿里云】尊敬的:您域名com使用的SSL证书cert-还有1天过期,过期时间2021-04-21。为防止业务受影响,请提前5个工作日续费并更新证书。请尽快登陆控制台处。这是阿里云的SSL证书产品的到期通知,SSL证书主要用于HTTPS加密协议场景包括,电子商务、微信小程序、微信公众号、APP、公司网站等。SSL证书到期后会让对应的项目立即暂停服务,比如微信小程序就会立即停止服务,用户不能正常使用小程序,其它的场景也一样,所以SSL证书到期之前必须要尽快办理续费!SSL证

    2022年9月27日
    3
  • 二进制减法图解_二进制加法的算法图解

    二进制减法图解_二进制加法的算法图解二进制减法类似于十进制的减法,我们从十进制的减法来推出二进制减法如何进行运算。十进制减法例如74323-47562=26761的运算。灰色部分为计算过程,绿色字为被减一得到的数,红色字为借一后得到的数。在运算过程中,从右往左逐位进行计算。3-2=1;2不够减6,向前借一后加10变成12;12-6=6;3在上一步被借一所以减为2,2不够减5,…

    2022年9月25日
    3
  • AutoSize属性问题探索

    AutoSize属性问题探索AutoSize属性问题探索如有错误,欢迎指出Google在Android8.0(APIlevel26)中,为TextView加入了一个动态属性AutoSize。在布局文件中,直接设置autoSizeTextType属性为uniform即可。这样,文本内容便会忽略android:textSize属性,从水平和垂直两个方向上缩放文本的内容。android:autoSizeTextType=”uniform”android:autoSizeMaxT

    2022年6月5日
    37
  • 首选dns服务器地址最快,各地首选dns地址大全【图解】

    首选dns服务器地址最快,各地首选dns地址大全【图解】又是dns,小编最近写了好多关于dns的话题。当然小编今天写的与以往也略有不同,今天小编来告诉大家我们中国各地首选的dns地址各是什么。首选dns地址,顾名思义是是我们电脑上网时首选的地址。如果我们想要查看,我们就打开我们电脑的网络设置,然后就可以看到我们的首选电脑上地址了。下面就是小编为大家整理的各地首选dns地址了。天津市首选DNS:202.99.104.68重庆市首选DNS:61.128….

    2022年6月12日
    107
  • Eclipse仿Visual AssistX 编辑着色插件

    Eclipse仿Visual AssistX 编辑着色插件

    2022年2月22日
    50

发表回复

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

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