如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?
Posted
技术标签:
【中文标题】如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?【英文标题】:How to append file in formData object without physically saving file in 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 中。
【问题讨论】:
【参考方案1】:如果您将 multer 与 MemoryStorage
一起使用(这是默认设置),您将在 file.buffer
中找到文件 Blob/Buffer。所有可用的文件属性都记录在这里:https://github.com/expressjs/multer#file-information。
这个Request Parsing in Node.js Guide(它是免费的)将帮助您在 Node.js 中上传文件。
【讨论】:
谢谢。它的工作。至少我的请求已成功创建。正在寻找这个确切的答案。 我很高兴它成功了?,祝你的项目好运!以上是关于如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 $.each 将多个文件输入附加到 FormData 对象?