解决node上传文件乱码问题终极方案

news/2024/11/24 22:25:15/

问题描述

今天在菜鸟教程学习node上传文件时遇到了一个中文乱码的问题,文件名包含中文就会显示乱码,上传到服务器的文件名也是乱码。试了两个方法都不行,最后还是问了万能的度娘才解决。

我做了一个非常简单的上传文件的界面,

  • 第一步选择文件
  • 第二步点击上传文件,上传到node后端服务

上传文件的界面

[]

  • node后端服务会上传文件,上传成功后会把文件名返回前端显示出来,这时候就会显示乱码了
    在这里插入图片描述
    在这里插入图片描述

node上传文件代码

app.post('/file_upload', function(req, res) {// req.files[0].originalname是获取到的文件名,这时候已经是乱码了var des_file = __dirname + "/" + req.files[0].originalname;fs.readFile(req.files[0].path, function(err, data){// 文件写入fs.writeFile(des_file, data, function(err) {var response = {}if(err) {console.error(err);} else {// 上传成功,返回前端消息response = {message: 'File uploaded successfully',filename: req.files[0].originalname}}res.end(JSON.stringify(response));})})
})

解决过程

在文章底下别人的笔记里面看到了关于这个问题的两个解决方案,决定尝试一下,尝试过后发现还是会乱码,不知道为什么,总之这两个方案都没有能解决我的问题。

在这里插入图片描述

最终解决方案

后来去问了度娘,看到了一个比较靠谱的解决方案,决定尝试一下。
在这里插入图片描述

加上这段代码后上传到服务器的文件没有乱码了,但是页面上显示的还是会乱码。

Buffer.from(originalname, "latin1").toString("utf8"
);

然后又加上了方案一的代码,页面上也不乱码了。

res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});

总结:上面这两段代码都加上就可以解决node上传文件时中文乱码的问题

附上我改完后的完整代码

app.post('/file_upload', function(req, res) {// 解析文件名var originalname = Buffer.from(req.files[0].originalname, "latin1").toString("utf8");var des_file = __dirname + "/" + originalname;fs.readFile(req.files[0].path, function(err, data){fs.writeFile(des_file, data, function(err) {var response = {}if(err) {console.error(err);} else {response = {message: 'File uploaded successfully',filename: originalname}}// 添加响应头res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});res.end(JSON.stringify(response));})})
})

http://www.ppmy.cn/news/124228.html

相关文章

编程练习【将找到的值乘以2】

给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。 接下来,你需要按下述步骤操作: 如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original&#xff0…

惠普高性能计算服务器,IDC:惠普、IBM领跑高性能计算服务器市场

据国外媒体报道,来自IDC的全球高性能技术服务器QView报告显示,2013年第二季度全球高性能计算(HPC)技术服务器市场收入近26亿美元,相比2012年同期的24亿美元上涨7.9%。科技巨头惠普和IBM分别获得30.1%和29.7%的总体收入份额,遥遥领…

计算机科学与技术用惠普星15,惠普星15和14性能对比

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 惠普星14和15都是同一时间上市的,性能差不多,主要区别就是外观尺寸不一样,一个14英寸,一个15.6英寸的,外观颜色不一样&am…

惠普超级计算机上太空,惠普要将超级计算机送上天,周一运往国际空间站

拼 命 加 载 中 ... Hewlett Pack Enterprise(HPE)周五表示,即将在周一发射的SpaceX-12火箭上搭载了Spaceborne超级计算机,为国际空间站带来强大的计算能力。这是一种通用计算设备,可以让空间站上的研究人员可以在不依赖互联网的前提下进行数…

5000内计算机应用专业推荐笔记本,5000左右的笔记本推荐

今年有什么5000左右的笔记本推荐?不久前Intel才更新了新一代酷睿i3/i5/i7处理器,不少电脑厂商就跟进了。看着自己那台已经使用多年的,屏幕分辨率为1366*768、2g内存、500g机械硬盘,现在使用起来老掉牙的本本,难道没有想…

android studio 7200u,轻薄有力量: HP 惠普 发布 ZBook Studio 工作站级超极本

轻薄有力量: HP 惠普 发布 ZBook Studio 工作站级超极本 2015-11-12 10:43:08 126点赞 125收藏 154评论 工作站给人留下的印象通常是大、厚、沉;超极本则正好与之相反。不过近日惠普宣布推出ZBook Studio移动工作站,希望能将工作站的强劲性能…

惠普触控板使用指南_手势操作更简便 笔记本触控板使用简介

【IT168 应用】现在许多笔记本的触控板都支持了多点触控,这意味着,在使用笔记本触控板时会有更多的操作方法的加入,用户可以通过不同的手势操作实现相应的功能,这样的操作可以提升用户的使用效率。那么,笔记本触控板应…

惠普电脑如何下载c语言软件,惠普笔记本电脑上的语言栏怎么弄

满意答案 mygood12f3 2013.01.23 采纳率:53% 等级:11 已帮助:6723人 首先运行“regedit”,展开“HKEY_CURRENT_USER/keyboard layout/preload”分支,在其下新建一个字符串值,命名为“1”,并将…