最近要在后台添加上传文件功能,并且保持文件名称不变,上传英文和数字名的文件都是正常的,唯独上传中文名的就失败,报错如下:

解决方案:

网上有些人的教程是直接修改Thinkphp框架的源代码,但这样不是很好,尽量不要去修改框架,以免升级后依然会出错。

正确方法:在move复制文件前,先对文件名进去中文转码,转换成gb2312,复制完成后再转换回utf-8即可

public function upload() {$path = ROOT_PATH . 'public/uploads'. DS;if(!file_exists($path)) {mkdir($path,0777,true);}$file = request()->file("file");if($file) {$filename=$file->getInfo('name');//转换中文编码,从UTF-8转成gb2312$filename=iconv("UTF-8","gb2312",$filename);//限制只能上传30MB$info = $file->validate(['size'=>1024*1024*30,'ext'=>'exe,zip,rar'])->move($path,$filename,true);$data= array();if($info) {//从gb2312转回UTF-8$savename=iconv("gb2312","UTF-8",$info->getSaveName());$data['code'] = 1;$data['msg'] ='上传成功!';$data['data']['src'] = "http://".$_SERVER['HTTP_HOST']."/uploads/".$savename;} else {$data['code'] = 0;$data['msg'] ='上传失败,只能上传exe|zip|rar类型的文件';}return $data;}
}

Thinkphp5上传中文名的文件报错move_uploaded_file(): failed to open stream: Invalid argument相关推荐

  1. ASP.NET,IIS7.0 上传大视频文件报错

    一.问题概述: 最近开发上传视频文件的功能.基本流程已经跑通了,可是上传30M以上的文件时就会报错. 二.资料海洋瞎扑腾 从网上查了一些资料,一般都是下面这种说法: 看着步骤倒是也不算繁琐,可是本人照 ...

  2. git上传代码出现的报错问题unable to access...

    解决git上传代码出现的报错: unable to access 'https://@github.com/BoySHI/vue3_ts.git/': 执行: git config --global ...

  3. 本地厂库上传到码云报错fatal: remote origin already exists.

    本地厂库上传到码云时候报错 . 试了好多次,没成功 有原因是密码错了,但是我也没改过密码,以前搞的都是直接再仓库克隆的. 解决方法: 先把仓库清理了 $ git remote rm origin 再链 ...

  4. php报错: file_put_contents(): failed to open stream 的解决方法

    问题: 一个PHP的关于图片的WEB服务器, 在本机上测试没有问题,但是部署到Centos上,图片上传无法成功,报错:file_put_contents(): failed to open strea ...

  5. flask 项目启动报错:OSError OSError: [Errno 22] Invalid argument

    flask 项目启动报错:OSError OSError: [Errno 22] Invalid argument 问题描述-OSError OSError: [Errno 22] Invalid a ...

  6. PHP使用copy函数复制windows文件时出现failed to open stream: Invalid argument in错误

    原始代码: $source = 'G:\www\offline\版本号.txt'; $destination = __DIR__ . DIRECTORY_SEPARATOR . 'll.txt'; c ...

  7. Azkban上传文件报错installation Failed.Error chunking

    关于azkaban上传job压缩包报错问题的解决方案 在azkaban上传job压缩包如果出现 installation Failed Error Chunking 错误,可通过如下方法解决. 在my ...

  8. 小程序上传文件报错uploadFile:fail url scheme is invalid,uploadFile:fail createUploadTask:fail Error: Invalid

    今天在这里记录一个很蠢的问题. 问题 最近用小程序的上传文件 API(wx.uploadFile) 上传音频,这个 API 说白了就是比 wx.request 多带了个请求头 multipart/fo ...

  9. c++上传oss中文路径报错_C# 从Oss对象存储器上下载文件到本地打包下载代码

    [HttpGet][Route("downloadimgszip")]public void downloadimages(string goodsid){//获取所有图片路径Li ...

最新文章

  1. 超详细解析 | 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR
  2. java awt button_AWT Button类
  3. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.1.Linux是什么)
  4. python的合法名称_Python未定义名称:turn。!
  5. Java多线程-线程中止
  6. reload vue 重新加载_vue面试,谈下router拦截
  7. Maxcompute造数据-方法详解
  8. 面试必备TCP三次握手
  9. Windows下安装和配置Maven的方法及注意事项
  10. Win10 OneDrive无法同步文件怎么办?一个命令搞定
  11. get、post请求参数乱码解决方法(qq:1324981084)
  12. PHP printf()函数格式化使用详解
  13. JavaScript的重载和递归
  14. sql随机取一条数据
  15. linux 查看上一级目录,du 使用详解 查看一级目录大小
  16. set的用法及短语_set的用法总结大全
  17. (六)python共享代码步骤
  18. 自制力的本质是什么?怎样才能变得自律?
  19. Chrome 图片批量下载扩展—— zzllrr Imager(小乐图客)
  20. 杂记文件cs.txt

热门文章

  1. 风控人千万不能错过的这种经典的策略规则组合
  2. excel拆分实例:如何快速制作考勤统计分析表
  3. 微信跳一跳全自动软件JumpDevil 使用说明
  4. 光纤耦合调制器市场现状及未来发展趋势
  5. 可见即可爬:快速上手 Selenium
  6. 【存货管理】存货的计价方法
  7. ConstraintLayout解析:手写和拖拽
  8. 铁打的营盘,流水的兵
  9. MySQL 的instr函数
  10. linux 可选参数,Linux 基本工具(virt-install --os-variant 可选值)