【问题标题】:How to append file in formData object without physically saving file in Node.js?如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?
【发布时间】:2021-08-12 20:10:44
【问题描述】:

我正在尝试开发一个应用程序以将文件从 react 上传到 NodeJs。一旦从 multer 上传运行几个验证,然后再次将文件作为 multipart/form-data 的一部分发送到另一个 API。我无法使用上传的文件附加到 formData 中,如下所示。

  router.post("/upload", uploadAndScan.any("filename"), (req, res) => {
    scanFiles(req.files[0])
      .then((data) => {
        global.logger.info("scanned successfully.....");
        res.status(200);
      })
      .catch((err) => {
        global.logger.info("scan api ended with errors", err);
        res.status(400).send({ error: err.message })
      });
  });

我的 scanFiles 函数看起来像

import FormData from "form-data";
export function scanFiles(file) {
  return new Promise((resolve, reject) => {
    const hrstart = process.hrtime();
    const formData = new FormData();
    formData.append("file", file), "sample_pdf.pdf"); // Getting error in this line

最后一行出现错误,因为它需要一个 usvstring 或 Blob,但我无法提供任何内容。我无法将文件保存到磁盘,因为它可能有一些病毒。我正在寻找是否有办法将文件转换为 Blob 或以其他方式将文件附加到 formData 中。

【问题讨论】:

    标签: node.js file blob multer form-data


    【解决方案1】:

    如果您将 multer 与 MemoryStorage 一起使用(这是默认设置),您将在 file.buffer 中找到文件 Blob/Buffer。所有可用的文件属性都记录在这里:https://github.com/expressjs/multer#file-information

    这个Request Parsing in Node.js Guide(它是免费的)将帮助您在 Node.js 中上传文件。

    【讨论】:

    • 谢谢。它的工作。至少我的请求已成功创建。正在寻找这个确切的答案。
    • 我很高兴它成功了?,祝你的项目好运!
    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 2015-03-04
    • 2017-11-03
    • 2017-10-08
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多