Как разобрать POST-запрос с файлами в NodeJS? С и без сторонних библиотек
Я пытался отправить файл на другой сервер для сохранения там, но я не знаю, как получить файл readstream из запроса. Я предполагаю, что это должно быть как прокси, но я не мог этого сделать.
Я хочу понять, как я могу разобрать запрос POST с файлами
Я попробовал multer, как в примере Custom Storage в их документе, но затем я столкнулся с проблемой, как отправить его в другое место,
Я обнаружил, что модуль npm "request" может создать потоковый запрос к другому серверу, я попробовал его, и у меня возникла ошибка на целевом сервере с multer.
Контроллер сервера, который должен сохранить мой файл:
export class UploadController {
public uploadAndSaveFile(req: Request, res: Response, next: NextFunction) {
upload.single('file')(req, res, (err: any) => {
if (err) {
console.error(err);
return;
}
});
if (!req.file) {
res.sendStatus(400);
console.log('not');
return;
}
const filePath = req.file.path;
const fileName = req.file.filename;
const mimeType = req.file.mimetype;
uploadService.create(filePath, fileName, mimeType)
.then((fileModel: any) => res.send(fileModel.recordset))
.catch(next);
}
}
Пробовал с многопартийностью
const form = new multiparty.Form();
form.on('part', (part: any) => {
request.post(`${config.get('services:StorageService')}/api/v1/upload`, {
form: {
file: part
}
});
});
Пробовал с мултером:
StorageStream.prototype._handleFile = function _handleFile(req, file, cb) {
this.getDestination(req, file, function (err, path) {
if (err) return cb(err);
request.post({
url: `${config.get('services:StorageService')}/api/v1/upload`,
formData: {
file: file.stream,
}
}, (err: any, res: any, body: any) => {
if (err) {
logger.error(err);
return;
}
console.log(body);
})
});
};