【发布时间】:2023-03-21 04:07:02
【问题描述】:
最终用户应该通过文件浏览器上传一个excel文件:
<FloatingActionButton title="Upload excel" primary className="import-vendor"
containerElement="label"
label="Browse file">
<input onChange={(e) => Actions.uploadXLS(e.target.files[0])}
type="file"
name="xls"
accept="application/vnd.ms-excel"
style={{ display: 'none' }}/>
<UploadIcon/>
</FloatingActionButton>
行动:
uploadXLS(file) {
this.getInstance().callUploadXLS( file );
}
服务:
callUploadXLS: {
remote( state, data ) {
const url = `${base}/vendor/form`;
return $http.instance.api.post( url, data );
},
success: Actions.XLSUploaded,
error: Actions.fail
}
这个文件应该被发送到一个使用 Spring boot 构建的 POST REST 端点,该端点接受一个多部分文件。端点无法识别像这样发送文件
error: "Internal Server Error"
exception :"org.springframework.web.multipart.MultipartException"
message : "Current request is not a multipart request"
path : "/vendor/form"
status : 500
timestamp : 1501747384079
如何发布excel文件?
编辑:我现在正在尝试发布文件列表:
const arrayOfFile = [];
let i = 0;
for ( i = 0; i < files.length; i++ ) {
const data = new FormData();
arrayOfFile[i] = data.append( 'file', files[i] );
}
this.getInstance().callUploadXLS( arrayOfFile );
但是 data.append('file', files[i]);总是返回未定义的
【问题讨论】:
-
你能不能也在这里添加动作代码
Actions.uploadXLS -
@dinchev 检查更新
-
将
const data = new FormData();移动到您的for循环之前。并为 ajax 调用提供data,而不是arrayOfFile。 -
我这样做了,但结果相同。
-
让 i = 0;常量数据 = 新 FormData(); for ( i = 0; i
标签: reactjs post spring-boot reactjs-flux