node使用Multer组件获取req.files问题
问题描述
nodeJS中使用Multer上传文件的问题
问题出现的环境背景及自己尝试过哪些方法
前端接收了一个base64字符串,组织成formData,使用append方法添加,发送给后端处理
后端找不到req.files,具体过程和问题如下:
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
后端读取图片并转为base64位字符串,添加到对象picBase64中并发送给前端,key为文件名:
let data = fs.readFileSync(filedir);
data = new Buffer(data).toString('base64');
picBase64[filename]=data;
前端接收的对象picBase64打印:
前端组织base64位字符串文件为formData,from为formData实例:
for(var key in msg){
console.log("key: "+key);
var base64String = msg[key];
//这里对base64串进行操作,去掉url头,并转换为byte
var bytes = window.btoa(base64String.split(',')[1]);
//处理异常,将ASCII码小于0的转换为大于0,
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for(var i = 0; i < bytes.length; i++){
ia[i] = bytes.charCodeAt(i);
}
if(key=="logo.ico"){
var blob = new Blob([ab], {type: 'image/x-icon'}); //type为图片的格式
form.append('logoico',blob, key);
continue;
}else{
var blob = new Blob([ab], {type: 'image/png'}); //type为图片的格式
form.append('picture',blob, key);
}
}
再将formData传输后台并打印结果,获取不到req.files,originalFilename也获取不到了:
但是multer组件的临时文件夹确实接收到了文件:
下面是formData信息:
你期待的结果是什么?实际看到的错误信息又是什么?
求大佬告知原因。提供点解决思路
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题终于解决了-_-||,不知道为什么,我的图片文件转base64位的时候前面没有需要去掉的URL部分,所以不需要调用split()方法。还有我使用的解码方法也有问题,应该使用window.atob()而不是window.btoa()方法,这样就可以获取到相应的消息了。