为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决php中上传文件时中文文件名会乱码的问题?

如何解决php中上传文件时中文文件名会乱码的问题?

PHP
ibeautiful 2019-03-16 13:54:19
我使用的是wamp,在实现文件上传功能时上传上去的文件名是中文话则会乱码,但数据库的信息是正确的,这该如何解决?此外,在接受表单信息创建文件夹时,如果是中文,创建的文件夹名同样会乱码。 if($image_files = request()->file('image_uploads')) { foreach($image_files as $file){ $info = $file->move(ROOT_PATH . 'public' . DS .'static' . '\\' . $title .'\\'. 'Picture' ,''); if($info){ $path_parts = pathinfo(ROOT_PATH . 'public' . DS . 'static' .'\\'. $info->getFilename()); //获取文件类型,名称及大小 $type=$path_parts['extension']; $name=$path_parts['filename']; $size=(filesize(ROOT_PATH . 'public' .DS. 'static' .'\\'. $title .'\\'. 'Picture' . '\\' .$info->getFilename())>>10).'KB'; $data=['name'=>$name,'type'=>$type,'size'=>$size,'activity_id'=>$activityId]; Db::table('file')->insert($data); }else{ //上传失败获取错误信息 $this->error($file->getError()); } $upload_status = 1; }
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

保存文件时直接保存中文名的话,要注意 windows 的文件名是 gbk 编码的,而你使用的应该是utf8,需要转换一下。

不过,不推荐直接保存原文件名,推荐使用 文件名+时间戳,md5加密后的字符串,真实的文件名只保存在数据库。

因为如果有一天你要把程序放到 linux 中,文件名使用中文又会遇到问题。

查看完整回答
反对 回复 2019-03-18
?
慕村9548890

TA贡献1884条经验 获得超4个赞

windows的文件名是gbk的

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 931 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信