Я пытаюсь перенести файл из API nestJS в API Python Flask.
Этот процесс будет запускаться запросом POST (FormData: файл) в API-интерфейсе гнезда. Затем гнездо API должно отправить файл в Python API.
HttpService от nestJS использует Axios. Поэтому моя цель - отправить файл с axios из NodeJS.
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 и поместите данные в конфигурацию axios.
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));
}
И затем, при такой конфигурации, request.files
в коде Python всегда остается пустым.
Как правильно перенести файл запроса в другой API с помощью axios?
Проблема по этой теме: Проблема с Axios Также пробовали это Исправление Axios