javascript - 使用multer从客户端获取详细信息后,如何在nodejs中以base64编码文件
问题描述
我将文件详细信息从 angular 发送到我的 app.js 作为
onFileSelected(event: EventEmitter<File[]>) {
const file: File = event[0];
console.log(file);
const formData = new FormData();
formData.append('file', file);
const r = new XMLHttpRequest();
r.open('POST', '/user/upload');
r.send(formData);
}
然后在 app.js
const multer = require('multer');
const upload = multer({dest:'./pics/'});
router.post('/upload', upload.single('image'), (req,res) => {
const body = req.file;
console.log(body);
const base64Data = new Buffer(JSON.stringify(body)).toString("base64");
console.log(base64Data);
}
我的console.log(body)
礼物
{ fieldname: 'image',
originalname: '21329726_1866651723650020_188839340_o.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: './pics/',
filename: '5146c9818ff517c426e34ad84ff3513f',
path: 'pics/5146c9818ff517c426e34ad84ff3513f',
size: 94093
}
现在问题来了——
1 - 我不想image/pdf
在任何文件夹中上传我的文件,但它正在上传'./pics/'
。
2-我想上传该文件,cloudinary
这就是我想要生成base64
该文件的原因,但是当我base64
在云中生成并上传该文件时,它会出错。
我认为这不是正确的编码方法,base64
或者我正在编码错误的数据格式。
请帮我。
解决方案
通过提供选项对象(在这种情况下{dest:'./pics/'}
),您告诉multer
您要将文件存储在该目录中。相反,将其配置为将文件保存在内存中:
var storage = multer.memoryStorage()
var upload = multer({ storage: storage })
根据文档,该file
对象还应包含一个buffer
包含文件数据的属性。你应该能够做到:
console.log(body.buffer.toString("base64"));
推荐阅读
- java - 没有方法签名: .android() 适用于参数类型。build.gradle(应用程序)中的异常
- firebase - Flutter:如何在使用 Firebase 时显示购物车中的商品数量
- shell - 我如何打印特定字段,并从每行包含分隔符的最后一个字段中获取最后一个单词
- r - 如何在R中的Excel中堆叠标签
- c++ - 构造函数和析构函数如何调用
- firebase - 使用 Firestore:如何防止恶意 ip 发送过多请求?
- c# - 由于 serviceProvider.GetService 无法添加单例服务
() 返回空值 - python-3.x - Tkinter 和 PIL 在 Python 中相互干扰(Image.open)
- pandas - 熊猫将一系列ndarrays转换为数据框
- amazon-cognito - AWS Cognito 作为 AWS AppSync 的开放 ID 授权方