如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?

How to append file in formData object without physically saving file in Node.js?

我正在尝试开发一个应用程序,将文件从 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 中。

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

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