fs.readFileSync 在 multer 上传文件之前发生,ENOENT 错误
fs.readFileSync happening before multer uploaded files, ENOENT error
我正在开发一个平台,用户应该能够通过 HTML 表单创建酒店。在表单中,有一个选项可以上传多个图像文件。
我正在使用 multer 来处理上传。我的程序如下:
创建目录'images'
- 将上传的图片保存在 'images' 目录中
- 将 'images' 目录中的图像转换为 base64
- 在数组中保存 base64 格式
- 在酒店 MongoDB 架构中保存数组
- 删除目录'images'
上传和保存工作正常,但当我尝试上传下一家酒店时出现错误:
Error: ENOENT: no such file or directory, open 'C:\ ...'
图像已成功存储在 'images' 目录中,但很明显,由于应用程序崩溃,文件没有任何处理,所以我必须手动删除它们。
因为这只在第二次尝试时发生(当重新启动应用程序时,它再次工作)我假设 fs.readFileSync
在图像上传完成之前执行。我很无能,因为 multer 是我的路由器链的一部分,转换为 base64 应该在所有文件上传到服务器之后发生。
我做错了什么?
多功能:https://i.stack.imgur.com/Wz167.png
Base64 转换:https://i.stack.imgur.com/oOEmR.png
删除函数(保存到DB后执行)https://i.stack.imgur.com/PlTvH.png
这是一个简单的代码片段,用于将图像获取为 base64。
没有将它们存储到磁盘中。
const express = require('express');
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage });
const app = express();
app.post('/submit', upload.array('images'), (req, res, next) => {
// req.files is array of `images` files
// I believe it is a `Buffer` object.
const base64Images = req.files.map(image => buffer.toString('base64'));
// Ready to save into DB;
console.log(base64Images);
})
我正在开发一个平台,用户应该能够通过 HTML 表单创建酒店。在表单中,有一个选项可以上传多个图像文件。
我正在使用 multer 来处理上传。我的程序如下:
创建目录'images'
- 将上传的图片保存在 'images' 目录中
- 将 'images' 目录中的图像转换为 base64
- 在数组中保存 base64 格式
- 在酒店 MongoDB 架构中保存数组
- 删除目录'images'
上传和保存工作正常,但当我尝试上传下一家酒店时出现错误:
Error: ENOENT: no such file or directory, open 'C:\ ...'
图像已成功存储在 'images' 目录中,但很明显,由于应用程序崩溃,文件没有任何处理,所以我必须手动删除它们。
因为这只在第二次尝试时发生(当重新启动应用程序时,它再次工作)我假设 fs.readFileSync
在图像上传完成之前执行。我很无能,因为 multer 是我的路由器链的一部分,转换为 base64 应该在所有文件上传到服务器之后发生。
我做错了什么?
多功能:https://i.stack.imgur.com/Wz167.png Base64 转换:https://i.stack.imgur.com/oOEmR.png 删除函数(保存到DB后执行)https://i.stack.imgur.com/PlTvH.png
这是一个简单的代码片段,用于将图像获取为 base64。 没有将它们存储到磁盘中。
const express = require('express');
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage });
const app = express();
app.post('/submit', upload.array('images'), (req, res, next) => {
// req.files is array of `images` files
// I believe it is a `Buffer` object.
const base64Images = req.files.map(image => buffer.toString('base64'));
// Ready to save into DB;
console.log(base64Images);
})