POST一个表单,其中一些元素是文件



在js web项目中,我想POST一个具有复杂json模式的表单,其中的一些字段将是file。

我该怎么做?

我目前独自上传一个文件,像这个

const data = new FormData();
data.append('mimetype', file.type);
data.append('filename', file.name);
data.append('file', file);
return this.httpClient.post(url, data)

但我想我的新表格是这样的:

var data ={username:"John doe", 
profilPhoto:{mimetype:..., filename:..., file: ...},
house:{
photo:{mimetype:..., filename:..., file: ...},
},
documents:[{mimetype:..., filename:..., file: ...}]
}

根据注释中的建议,将文件编码为base64,然后在后端解码并将其保存为blob。另一种选择是使用FormData。对于对象数组,可以在后端使用JSON.stringify,然后使用JSON.parse。

addFile(data:any): Observable<any> {
const postData=new FormData();
postData.append('username', data.username);
postData.append('profilPhoto', data.profilePhotoFile);
postData.append('house', data.houseFiles);
postData.append('documents', JSON.stringify(data.documents);
let API_URL = this.endpoint+`/add-file`;
return this.http.post(API_URL, postData)
}

最新更新