【发布时间】:2019-06-28 03:44:18
【问题描述】:
无法两次上传同一个文件。如果上传不同的文件,它的工作原理
chrome中网络下的错误
{ timeStamp: ......, status: 417
error: 'Bad Request',
message: 'Required request part 'file' is not present'
path: 'url as hosted on Tomcat'
}
Spring Boot Controller.java 文件
@PostMapping("/Post")
public ResponseEntity<String> handleFileUpload(@RequestParam("file")
MultipartFile file){ String Message=""; try .......(and so on)}
我的 Angular 组件
<form [formGroup]="uploadForm" (ngSubmit) = "onSubmit()">
<input type="file" id="selectFile" formControlName="file1" name="selectFile"
(change)="fileEvent($event)"/>
<input type="submit" name="Submit"/>
</form>
Component.ts 文件
fileEvent(e) {
this.data = e.target.files[0];
}
onSubmit() {
let headers: any = new Headers();
headers.append('Content-type', 'undefined');
let formData = new FormData();
formData.append("file", this.data);
const req5 = new HttpRequest('POST', 'url as hosted on TOMCAT', formData,
reportProgress: true,
responseType: 'text'
});
return this.httpClient.request(req5).subscribe(e => {(
console.log(e);
)}
}
我在哪里做错了?
【问题讨论】:
-
第二次将请求复制为 curl 并粘贴,Devtools -> Networks -> 右键单击请求 -> 复制为 curl
-
@TimBiegeleisen - 我也知道问题所在,但不知道解决办法。问题:Angular 只关注更改,因此当上传的文件没有更改时,它将不起作用
-
@TimBiegeleisen 它的 Angular 5
-
@PierreDuc - 是的,很抱歉,我做了这些更改,例如用 File & onSubmit 替换 selectFile。我能够向服务器发送不同的文件,但是当我尝试多次上传相同的文件时,我收到错误 HTTP 400
-
@Olivia 我只能想象在您的代码中某处您将
this.data再次设置为未定义。您可以做的最好的事情是检查网络请求选项卡并查看发送到服务器的内容。比较第一个请求和第二个请求,看看有什么不同
标签: java angular spring typescript spring-boot