PHP中move_uploaded_file上传中文文件名失败

项目需要上传文件名保持不变,发现上传中文失败:错误如下:

move_uploaded_file(public/upload/files/2019/04-17/\开密二次开发.rar): failed to open stream: Invalid argument

失败的原因大致猜到是编码问题.保存文件时,需要将中文由utf8转为gb2312。

$files = $_FILES['attachment']; // 上传的表单附件名

$name = iconv("UTF-8", "gb2312", $files['name']);

move_uploaded_file($files['tmp_name'], "/upload/$name");

额外补充:如果大家使用Tp5 上传,文件在think/File.php.大概是374行:大多数解决办法是在下面的方法转码,但会存在问题,转码后,文件是上传成功,随后就报错:

elseif (!move_uploaded_file($this->filename, iconv('utf-8','gb2312',$filename))) {

$this->error = 'upload write error';

return false;

}

会抛出异常:

SplFileobject::__construct(/upload\files\2019\04-16\资源.rar): failed to open stream: No such file or directory

解决:

上传中文乱码,使用iconv转码的,不应该在move_uploaded_file()中转码,应该在file类 buildSaveName()方法中大概422行中转码:

最后一段:

return iconv('utf-8','gb2312',$savename);

那么如果大家是ajax上传,记得在返回的时候转成utf8返回,比如返回的中文乱码,ajax解析报错:

比如以Tp5.0是这样:

$return_data['url'] = '/'.UPLOAD_PATH.$new_path.iconv('gb2312','utf-8',$info->getSaveName());

$this->ajaxReturn($return_data);

总结

以上所述是小编给大家介绍的PHP 中move_uploaded_file 上传中文文件名失败 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

php获取文件名称和扩展名的方法

php获取文件名称和扩展名

1.basename()-返回路径的文件名

请看下面php代码:

$path =

"/usr/www/html/index.php";

echo basename($path)."
";

//如果选择suffix则忽略扩展名

echo basename($path,".php");

?>

运行结果:

index.php

index

2.dirname()-返回当前脚本的文件路径!

php代码:

//——FILE__返回文件完整路径

$dir = dirname(__FILE__);

echo $dir;

?>

运行结果:

F:\web\zend\exercise

3.pathinfo() 返回一个关联数组包含有 path 的信息。

包括以下的数组单元:路径名称dirname,文件名称basename 和 扩展名称extension。

请看下面简单代码演示:

$path =

"/usr/www/html/index.php";

$pathinfo

= pathinfo($path);

echo "目录名称:$pathinfo[dirname]
";

echo "文件名称:$pathinfo[basename]
";

echo "扩展名:$pathinfo[extension]";

?>

运行结果:

目录名称:/usr/www/html

文件名称:index.php

扩展名:php

4.realpath -- 返回规范化的绝对路径名

php代码如下:

$path =

"./exercise/php.txt";

$realpath

= realpath($path);

echo $realpath;

?>

最后注意一个小技巧:不同路径的文件路径操作符可能,不同,windows下可以用"/"和"\",

linux下只能用"/",所以开发的时候,建议都用"/",如我上面的文件路径写法!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

invalid argument php move_PHP中move_uploaded_file上传中文文件名失败的解决方法相关推荐

  1. 论坛php 图片上传,Discuz上传图片失败的解决方法

    相信使用Discuz的朋友们都遇到过这样的问题,上传文件失败或不显示,包括现在官方论坛里还有很多站长在问这个问题.我以前也遇见过这样的问题,现在将自己的解决方法与大家分享探讨.没有多少技术含量. 1: ...

  2. 微信小程序云开发CMS内容管理平台csv上传乱码或失败的解决方法

    一.新建Excel并编辑数据: 二.Excel 编辑好后另存为csv文件(直接导入微信小程序云开发数据库会出现中文乱码): 三.csv文件直接改后缀名为.txt,然后用记事本打开(如首行出现空字段需删 ...

  3. ubuntu中RAR解压缩中文文件名失败的解决方法

    1.到http://www.rarlab.com/download.htm下载RAR 4.20 for Linux   2.解压缩,运行终端,进入解压缩的目录,命令行运行:sudo make inst ...

  4. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...

  5. 织梦后台上传图集显示302错误解决方法

    织梦后台上传图集显示302错误解决方法 在include/userlogin.class.php文件中的第二行session_start();前加上 if (isset($_POST["PH ...

  6. 完美解决ExtJs6上传中文文件名乱码,后端SpringMVC

    ExtJs上传中文文件名乱码,观察请求. ExtJs6上传乱码从后台无法解决,因为文件名请求里面就已经乱码了,后台无法解码. 除非请求参数正确没有乱码,后台因为编码设置不一样,可以通过后台处理乱码 这 ...

  7. Electron在win7上加载plotyjs失败的解决方法

    Electron在win7上加载plotyjs失败的解决方法 错误详情 解决方法 错误详情 程序中使用plotjs,经过electron打包之后,在win10电脑上运行正常,在win7电脑上没有办法加 ...

  8. C# .net中cookie值为中文时的乱码解决方法

    C# .net中cookie值为中文时的乱码解决方法 一.cookie的名称或子cookie的名称不能为中文,否则无法获得cookie 这个好办,名称不用中文即可 二.cookie的值为中文时候,取c ...

  9. PHP中file_exists()判断中文文件名无效的解决方法

    PHP中file_exists()判断中文文件名无效的解决方法 参考文章: (1)PHP中file_exists()判断中文文件名无效的解决方法 (2)https://www.cnblogs.com/ ...

  10. ASP中文件上传组件ASPUpload介绍和使用方法

    [导读]要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload   要实现该功能,就要利用一些特制的文件 ...

最新文章

  1. 创建文档库时指定文件夹(路径)
  2. PHP的CURL报错的排查记录:短连接的成本真的很高啊
  3. 都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇
  4. C# 修改项目文件夹名称完全版
  5. 早晨有好多学生在买早餐吃,这样好吗?家长不给孩子做饭吗?
  6. POSIX 线程详解
  7. 开放API接口 笑话、天气、新闻 1
  8. GBin1分享:一个漂亮的jQuery页面内容导航插件 - Flexiable Nav
  9. gdb 查看是否 栈溢出_[原理分析]Linux下的栈溢出案例分析-GDB调试操练[1]
  10. debian 连接 蓝牙键盘
  11. SQLI-LABS——Page-2 Advanced Injections Less21~Less37
  12. ESL4.5 学习笔记(含感知器内容SVM预备知识)
  13. 怎么架设魔兽世界服务器?
  14. NB-IOT相关的术语 SGW、PGW、LTE、RRC、E-UTRAN、EPC
  15. 微信小程序微信授权登录,使用getPhoneNumber()部分手机无法获取动态令牌code(Taro)
  16. java计算一个月有几周_java 如何获取 一个月 有多少周
  17. 大数据江湖之即席查询与分析(上篇)--即席查询与分析的前世今生
  18. 推荐系统研究常用数据库
  19. 四大维度全景揭秘阿里巴巴智能对话开发平台 1
  20. 计算机信息心得体会作文50字,信息技术心得体会(精选11篇)

热门文章

  1. 如何选择一门适合自己的编程语言?
  2. C++文件操作需要注意的一些问题及一个写文件的方法
  3. 【就业面试】技术面试题目及答案
  4. 1.2.计算机硬件介绍
  5. 为什么你有10年经验,但成不了专家?(转)
  6. 天大18年6月考试财务报表分析
  7. win7访问服务器共享文件夹提示没有权限,win7设置共享后访问提示无权限的解决方法...
  8. 欧姆龙 CJ1W-ETN21连接SNTP服务器实现自动时钟调整功能
  9. 欧姆龙 CJ1W-SCU yN+x功能
  10. 国际电子邮件协会判定垃圾邮件规则