标签分类
技术文章
当前位置:主页 > 计算机编程 > php > PHP中move_uploaded_file上传中文文件名失败

PHP中move_uploaded_file上传中文文件名失败的解决方法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:124

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

这篇文章主要知识点是关于PHP,move_uploaded_file,文件名,PHP中move_uploaded_file上传中文文件名失败,php获取文件名称和扩展名的方法 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Java语言程序设计:进阶篇
  • 类型:Java编程大小:86.3 MB格式:PDF出版:机械工业出版社作者:梁勇
立即下载

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

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

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

<?php
$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代码:

<?php

$path =
"/usr/www/html/index.php";

echo basename($path)."<br>";

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

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

?>

运行结果:

index.php

index

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

php代码:

<?php

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

$dir = dirname(__FILE__);

echo $dir;

?>

运行结果:

F:\web\zend\exercise

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

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

请看下面简单代码演示:

<?php

$path =
"/usr/www/html/index.php";

$pathinfo 
= pathinfo($path);

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

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

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

?>

运行结果:

目录名称:/usr/www/html

文件名称:index.php

扩展名:php

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

php代码如下:

<?php

$path =
"./exercise/php.txt";

$realpath 
= realpath($path);

echo $realpath;

?>

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

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

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

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到spring+springmvc+mybatis整合注、 详解vue axios封装请求状态、 解决axios.interceptors.respon、 等php文章进一步学习,感谢大家的阅读和支持。

上一篇:Laravel自定义command命令代码详解

下一篇:php中字符串和整数比较的方法总结

展开 +

收起 -

学习笔记
网友NO.536541

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

php获取文件名称和扩展名 1.basename()-返回路径的文件名 请看下面php代码: ?php$path ="/usr/www/html/index.php";echo basename($path)."br";//如果选择suffix则忽略扩展名echo basename($path,".php");? 运行结果: index.php index 2.dirname()-返回当前脚本的文件路径! php代码: ?php//——FILE__返回文件完整路径$dir = dirname(__FILE__);echo $dir;? 运行结果: F:\web\zend\exercise 3.pathinfo() 返回一个关联数组包含有 path 的信息。 包括以下的数组单元:路径名称dirname,文件名称basename 和 扩展名称extension。 请看下面简单代码演示: ?php$path ="/usr/www/html/index.php";$pathinfo = pathinfo($path);echo "目录名称:$pathinfo[dirname]br";echo "文件名称:$pathinfo[basename]br";echo "扩展名:$pathinfo[extension]";? 运行结果: 目录名称:/usr/www/html 文件名称:index.php 扩展名:php 4.realpath -- 返回规范化的绝对路径名 php代码如下: ?php$path ="./exercise/php.txt";$realpath = realpath($path);echo $realpath;? 最后注意一个小技巧: 不同路径的文件路径操作符可能,不同,windows下可以用"/"和"\", linux下只能用"/",所以开发的时候,建议都用"/",如我上面的文件路径写法! 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。 ……

网友NO.101153

php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名

写一个PHP函数,实现扫描并打印出自定目录下(含子目录)的所有jpg文件名的方法 ?php$dir = "E:\照片\\";//打印文件夹中所有jpg文件function printJpg($dir,$deep = ""){ $dirSource = dir($dir); while($d = $dirSource-read()){ if($d == "." || $d == ".."){ continue; } if(filetype($dir.$d) == "dir"){ printJpg($dir.$d."/",$deep."--"); } if(mime_content_type($dir.$d) == "image/jpeg"){ echo $deep.$d."br/"; } }}printJpg($dir); 这个函数在我本地运行的时候回超时,可能是我本地图片有点多,好几十G图片。 以上这篇php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明