【发布时间】:2018-12-16 02:58:05
【问题描述】:
您好,我无法让我的 httpClient 补丁请求发送内容类型为“multipart/form-data”的 FormData。
我已经指定了如下所示的标题:
private httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'multipart/form-data', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache'
})
};
我执行以下操作以保存到 nodejs 服务器:
const formData: FormData = new FormData();
formData.append('materialFile', 'something');
return this.httpClient.patch<any>(this.apiUrl + loan.id, formData, this.httpOptions);
在我的 Nodejs/Express 服务器上,我执行以下操作:
const Multer = require('multer');
router.patch('/:id', Multer().fields([{ name: "materialFile", maxCount: 1 }]), (req, res, next) => {
console.log(req.files['materialFile']);
});
当我在浏览器上检查请求标头时,我发现内容类型是 application/json。
有人知道为什么吗?
【问题讨论】:
-
为什么要在 PATCH 请求中发送表单数据?表单数据应该在 POST 中发送,我认为 Angular 正在识别这一点,而是改变了你的内容类型
-
@Dummy 我把它改成 post 还是一样
-
如果您想收到完整的回复,请使用observe:response,请参阅angular.io/guide/http#reading-the-full-response
-
能否在浏览器的开发者工具中显示 xhr 请求状态? (Ctrl+shift+i) -> network -> xhr 从您的应用发送请求并显示 xhr 响应 @ShaunChua
-
@Debojyoti 拦截器是问题所在,谢谢
标签: angular express angular5 multer angular-httpclient