Node.js 使用memoryStorage时,多缓冲区为空
我用它来处理快车上传的文件。我想将缓冲区写入base64字符串进行存储。但是,当使用Node.js 使用memoryStorage时,多缓冲区为空,node.js,express,multer,Node.js,Express,Multer,我用它来处理快车上传的文件。我想将缓冲区写入base64字符串进行存储。但是,当使用memoryStorage选项或(应该将文件保存在内存中而不是写入磁盘)时,对象上的buffer属性始终为null: var multer = require('multer'); var storage = multer.memoryStorage(); . . . app.post('/', multer({ storage: storage }).single('photo'), function(req
memoryStorage
选项或(应该将文件保存在内存中而不是写入磁盘)时,对象上的buffer
属性始终为null
:
var multer = require('multer');
var storage = multer.memoryStorage();
. . .
app.post('/', multer({ storage: storage }).single('photo'), function(req, res) {
var photo = req.files.photo || req.file || null;
if (photo) {
console.log(photo);
var data = photo.buffer.toString('base64');
. . .
}
});
// Result of console.log
{
fieldname: 'photo',
originalname: 'me.jpg',
name: '71a7e8c6aa262063574ddca9538c5174.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
path: 'C:\\Users\\alsoi\\AppData\\Local\\Temp\\71a7e8c6aa262063574ddca9538c5174.jpg',
extension: 'jpg',
size: 16563,
truncated: false,
buffer: null
}
我尝试过JPG、PNG和文本文件,但结果总是一样的
我遇到了一个从未解决的问题。我是不是配置错了骡子?还是只需要将其保存到磁盘,然后异步读取到base64?理想情况下,我只想使用multer应该创建的缓冲区
我正在使用Windows 10上的Node 5.11.1、Express 4和multer 1.2.0进行开发。能否尝试在函数内部调用multer而不是作为中间件?我喜欢这样做,这样可以更好地控制错误消息
var uploadFile = multer(
{
storage: multer.memoryStorage(),
})
.single('photo');
app.post('/', function(req, res) {
uploadFile(req, res, error => {
if (error) { // handle error }
var photo = req.files.photo || req.file || null;
if (photo) {
console.log(photo);
var data = photo.buffer.toString('base64');
. . .
}
});
});
您是否可以尝试在函数内部调用multer而不是作为中间件?我喜欢这样做,这样可以更好地控制错误消息
var uploadFile = multer(
{
storage: multer.memoryStorage(),
})
.single('photo');
app.post('/', function(req, res) {
uploadFile(req, res, error => {
if (error) { // handle error }
var photo = req.files.photo || req.file || null;
if (photo) {
console.log(photo);
var data = photo.buffer.toString('base64');
. . .
}
});
});
这会导致:
错误:发送邮件后无法设置邮件头。
对我来说,这很奇怪。由于某种原因,您的回复被发送了两次。是否在uploadFile方法外部发送响应,然后在其内部发送响应?另外,file.buffer现在在吗?这会导致:错误:发送头后无法设置头。
对我来说。这很奇怪。由于某种原因,您的回复被发送了两次。是否在uploadFile方法外部发送响应,然后在其内部发送响应?还有,file.buffer现在在吗?