我使用multer处理Express路线上的上传文件。我想将缓冲区写入base64字符串进行存储。但是,当使用memoryStorage
选项或not specifying any options(应该将文件保留在内存中而不是写入磁盘)时,对象上的buffer
属性始终为{{ 1}}:
null
我尝试过JPG,PNG和Text文件,但结果总是一样。
我遇到this issue,但从未解决过。我是不是以某种方式错误配置了m ??或者我只需要将其保存到磁盘然后将其异步读取到base64吗?理想情况下,我只想使用multer应该创建的缓冲区。
我在Windows 10上使用Node 5.11.1,Express 4和multer 1.2.0进行开发。
答案 0 :(得分: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');
. . .
}
});
});