antd upload手动上传_antd 手动上传文件

本文介绍如何在antd的Upload组件中实现手动上传文件,并在上传时添加额外参数。作者遇到的问题是在手动上传时无法通过data传递附加参数,且文件流发送到后台时出现'Content-Type'错误。解决方案是将文件和附加参数构建成multipart/form-data格式的数据进行提交。
摘要由CSDN通过智能技术生成

先说我要实现的效果:我想用antd 的 upload 实现手动上传文件,上传文件时还有附加参数

我看了官网上说在beforeUpload中返回false,然后通过按钮点击事件触发上传。

Q1:附加参数怎么传到后台(我知道自动上传的话用data,但是手动上传的时候用data传不过去)

Q2:文件流要怎么传给后台啊?

我直接将获取到的filelist加上附加参数,组成json对象,传过去之后,后台报“request has no multipart/form-data Content-Type”的错。

下面是我的代码

submit() {

const { fileList, beginTime, endTime } = this.state;

const sendData = {

file: fileList[0], // 一次只上传一个文件

beginTime: parseInt(beginTime, 0),

endTime: parseInt(endTime, 0),

};

// console.log(fileList);

Service.uploadCode(JSON.stringify(sendData))

.then((res) => {

this.setState({

fileList: [],

// buttonDisabled: true,

});

console.log(res);

})

.catch((err) => {

console.log(err);

});

}

render() {

const self = this;

const {

uploadLoading,

submitLoading,

buttonDisabled,

beginTime,

endTime,

} = this.state;

const uploadProps = {

action: '/api/v1/productExchangeCode/import',

onRemove: (file) => {

this.setState(({ fileList }) => {

const index = fileList.indexOf(file);

const newFileList = fileList.slice();

newFileList.splice(index, 1);

return {

fileList: newFileList,

};

});

},

beforeUpload: (file) => {

console.log(file);

if (file.name.split('.')[1] !== 'xlsx') {

message.error('只能上传.xls或者.xlsx文件!', 3);

return false;

} else {

if (!beginTime || !endTime) {

Modal.warning({

title: '信息不完整',

content: '请填写有效期',

});

return false;

}

self.setState(({ fileList }) => ({

buttonDisabled: true,

fileList: [...fileList, file],

}), () => {

console.log(this.state.fileList);

});

return false;

}

},

fileList: this.state.fileList,

};

return (

导入兑换码列表

this.handleCancel(e)}>

取消

this.submit(e)}>

确定

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值