【发布时间】:2020-02-29 02:18:45
【问题描述】:
我正在尝试将文件从 nestJS API 传输到 Python Flask API。
此过程将由 Nest API 上的 POST 请求(FormData: 文件)触发。然后nest api应该将文件发送到Python api。
nestJS 的 HttpService 使用 Axios。所以我的目标基本上是从 NodeJS 发送带有 axios 的文件。
FormData 在节点 JS 上不可用,所以我安装了 Nmp FormData 。
Python
Python 代码,我认为它工作正常,因为 Postman 请求通过没有任何问题。
@app.route('/route', methods=['POST'])
def user():
params_data = json.load(request.files.get('file'))
return 'OK'
NestJS
在鸟巢方面,我尝试了很多东西。
但主要思想如下: 使用 formData.getHeaders 作为 axios headers 并将数据放入 axios config 中。
app.controller.ts
@Post()
uploadFile(@Req() request: Request) {
// request is Express request
const formData: any = new FormData();
let newFile;
if (request.hasOwnProperty('file')) {
newFile = (request as any).file; // This is working
}
formData.append('file', newFile.buffer, 'filename');
return this.appService.launchOptim(formData);
}
app.service.ts
public launchOptim(modelData: FormData) {
const axiosConfig: AxiosRequestConfig = {
headers: modelData.getHeaders(),
data: modelData,
};
return this.http.post('http://localhost:5000/route', modelData, axiosConfig)
.pipe(map(result => result.data));
}
然后,使用该配置,python 代码中的request.files 始终为空。
如何使用 axios 将请求的文件正确传输到另一个 api ?
关于这个话题的问题: Axios issue 也试过这个 Axios fix
【问题讨论】:
-
嘿雨果,你有没有设法让这个工作?我也有类似的要求……不过对我来说,我不控制其他 API。
-
我们使用了另一种解决方案。我帮不上忙,对不起:'(
标签: javascript node.js flask axios nestjs