antd 上传进度_React 上传进度条问题 原生js上传 input type=“file”

本文详细介绍了在React应用中如何利用antd组件实现文件上传,并结合原生JS处理上传进度,包括检查文件类型、上传状态管理、错误处理等。同时,文章还解决了上传过程中遇到的两个关键问题:1. 文件重复选择时不触发onchange事件;2. 如何取消xhr对象的事件监听以终止上传。
摘要由CSDN通过智能技术生成

canUpload: true,//是否可以上传,初始值不可上传,所以disabled为true

filename: '',//上传文件的名称

loading: false,//点击上传的时候出现加载图标

fileList: [],//已上传的文件列表

isNumber: true,//判断数量是否为数字,

var file = document.getElementById("pic").files[0];

---------------------------------------------------------------------------------------------------------

//新的上传文件的js代码

submitUpload(){

if(!this.state.isNumber){

message.error("请输入正确的数字格式");

return

}

this.setState({ loading: true });

var here = this;

var file=document.getElementById('pic').files[0];

// var decodeStr = URLDecoder.decode(this.state.datasetName);

// decodeStr = this.state.datasetName;

$.ajax({

// url: this.uploadUrl+"?name=" + URLDecoder.decode(this.state.datasetName),

url: this.uploadUrl+"?name=" + this.state.datasetName,

// url: ajax.shangchuanshu(decodeStr),

type: "post",

data: file,

processData: false,

contentType: false,

success: function(res) {

if(res){

if(res.status == "OK"){

here.uploadSuccess();//上传成功之后的操作

//延迟3秒刷新列表

setTimeout(function(){

here.getTrainDataSetList();

message.success("上传成功!");

var fileList = here.state.fileList;

fileList.push(here.state.filename);

here.setState({loading: false,fileList:fileList});

},2000);

}else{

message.error(res.message);

here.setState({loading: false});

}

}

},

error:function(err){

notification['error']({

message: here.state.filename+'文件上传失败',

description: ''

});

here.setState({loading: false});

}

});

}

---------------------------------------------------------------------------------------------------------

//判断文件选择框的值

fileInput(e){

var file=document.getElementById('pic').files[0];

var dataSetName=file.name.split(".zip")[0];

var filename = file.name;

if(filename===''){

document.getElementById("fileTips").innerHTML="请选择要上传的文件";

}else{

document.getElementById("fileTips").innerHTML="";

var fileTypeArr =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值