如何解析POST请求与NodeJS中的文件?有和没有第3方库

时间:2019-05-30 16:37:27

标签: node.js proxy http-post multer createwritestream

我试图将文件发送到另一台服务器进行保存,但是我不知道如何从请求中读取文件。我想它应该作为代理,但我做不到。


我想了解如何解析带有文件的POST请求

我曾尝试在其文档的“自定义存储”示例中尝试使用multer,但随后遇到了如何将其发送到另一个地方的问题,

我发现“请求” npm模块可以创建到另一台服务器的流请求,我尝试了一下,但在使用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
                }
            });
        });

尝试了multer:

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);
        })
    });
};

0 个答案:

没有答案