我按照this教程执行文件上传,并尝试使用它发送表单数据 以下是filechange事件的代码
number
点击提交按钮后,代码会被执行
onFileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
console.log("gettign file ...")
let file: File = fileList[0];
this.formData.append('photoupload', file, file.name);
}
}
在服务器端,我只能使用req.file()获取文件,但是当我执行req.allParams()时,它没有数据。同时尝试console.log,formdata在angular app中给出了空结果。
修改 - >
如果我仅使用正文发出另一个帖子请求,那么我会得到数据。因此,这可能不是附加表单数据的正确方法。
let body = JSON.stringify(this.personal);
this.formData.append("personal", body);
const headers = new HttpHeaders({
'Authorization' : 'my-auth-token'
});
this.http.post('/api/fmng/create', this.formData, {
headers: headers
}).subscribe(data => {
console.log(data);
});
答案 0 :(得分:0)
onFileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
console.log("gettign file ...")
let file: File = fileList[0];
const fileBlob= new Blob([file], { type: "<content-type>" });
this.formData.append('photoupload', fileBlob);
}
}
你需要在这里发送一个blob。
答案 1 :(得分:0)
在将文件附加到formdata
之前,我必须附加文本参数 let body = JSON.stringify(this.personal);
this.formData.append("personal", body);
this.formData.append('photoupload', this.file, this.file.name);
const headers = new HttpHeaders({
'Authorization' : 'my-auth-token'
});
this.http.post('/api/fmng/create', this.formData, {
headers: headers
}).subscribe(data => {
console.log(data);
});
这解决了这个问题。