node使用Multer组件获取req.files问题

发布于 2022-09-11 15:04:21 字数 1963 浏览 10 评论 0

问题描述

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风启觞 2022-09-18 15:04:21

问题终于解决了-_-||,不知道为什么,我的图片文件转base64位的时候前面没有需要去掉的URL部分,所以不需要调用split()方法。还有我使用的解码方法也有问题,应该使用window.atob()而不是window.btoa()方法,这样就可以获取到相应的消息了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文