这是我的问题...
我正在尝试通过Angular 6将文件上传到Teamwork API https://developer.teamwork.com/projects/file-uploading/upload-a-file 但是无论我尝试上传什么文件,我总是会收到错误消息 “表单字段“文件”不包含有效文件”
我尝试发送没有内容类型,内容类型的消息:未定义等 我尝试将文件对象添加到formdata
以下是一些代码:
---模板文件---
<input type="file" [id]="question.id" class="form-control" (change)="onUpload($event)">
<button class="btn btn-update"><i class="icon-success file-continue" (click)="onUpdate($event)"></i></button>
---组件---
onUpload(event: any) {
this.uploadObject = event.target.files[0];
this.uploadName = event.target.files[0].name;
}
onUpdate(event: any) {
this.twApiService.uploadFile(this.uploadObject).subscribe(
(response: any) => {
console.log(response);
},
(error: any) => {
console.log(error);
}
);
}
---服务---
uploadFile(uploadObject: any) {
const url = 'https://[hidden].teamwork.com/pendingfiles.json';
const fileObject = { file: uploadObject };
const headers = new HttpHeaders({'Content-Type': 'multipart/form-data', 'Authorization': 'BASIC ' + window.btoa(this.key + ':xxx')});
return this.http.post(url, fileObject, {headers});
}
在过去3天里,我在互联网上找到的所有内容都尝试了此代码的许多版本,但没有任何效果。我总是收到此错误: “表单字段“文件”不包含有效文件”
有人可以给我一些指导,以解决此问题,或者至少尝试不同的尝试吗?
致谢,伊沃。
答案 0 :(得分:0)
我检查团队合作API及其奇怪之处,因为他们希望请求正文为application / json(通常文件上传是通过formdata请求进行处理的)
因此,请首先尝试此操作,然后在“网络”标签中检查是否为application / json请求:
uploadFile(uploadObject: any) {
const url = 'https://[hidden].teamwork.com/pendingfiles.json';
const fileObject = { file: uploadObject };
const headers = new HttpHeaders({'Authorization': 'BASIC ' + window.btoa(this.key + ':xxx')});
return this.http.post(url, fileObject, {headers});
}
如果那不起作用,请尝试使用formData方法 重要的是不要手动设置formData类型,因为它会自动识别它。
uploadFile(uploadObject: any) {
const url = 'https://[hidden].teamwork.com/pendingfiles.json';
const formData = new FormData();
formData.append('file', uploadobject);
const headers = new HttpHeaders({'Authorization': 'BASIC ' + window.btoa(this.key + ':xxx')});
return this.http.post(url, formData, {headers});
}