下了一套PHP页面使用,其中有文件上传功能,但出现一下问题
上传中文文件名的文件,在页面上,mysql数据库中文件名都是正常显示的,但是存到目录文件夹下,存储的名字确是乱码
下载此文件正常,但是默认文件名非页面上显示的正常名字,而是服务器目录下乱码的名字(火狐和谷歌浏览器下载下来的文件名默认正常,IE乱码)
部分中文名作为文件名不成功,查了下是原本中文UTF-8的编码存储后编码转换成立GBK的文字,部分字的编码转出来是文件名不能用的问号等符号所以失败。
请问在上传文件之后应该在php当中加什么代码使得存入后文件夹内名字正常并且不影响下载(上传完后我试着把服务器后台文件夹的这个文件名改成正常的名字,但是下载找不到该文件了)
上传中文文件名的文件,在页面上,mysql数据库中文件名都是正常显示的,但是存到目录文件夹下,存储的名字确是乱码
下载此文件正常,但是默认文件名非页面上显示的正常名字,而是服务器目录下乱码的名字(火狐和谷歌浏览器下载下来的文件名默认正常,IE乱码)
部分中文名作为文件名不成功,查了下是原本中文UTF-8的编码存储后编码转换成立GBK的文字,部分字的编码转出来是文件名不能用的问号等符号所以失败。
请问在上传文件之后应该在php当中加什么代码使得存入后文件夹内名字正常并且不影响下载(上传完后我试着把服务器后台文件夹的这个文件名改成正常的名字,但是下载找不到该文件了)
{
if (!move_uploaded_file($file['temp'], iconv("utf-8","gbk",$CONFIG['uploads']['path'] . $file['name'])))
{
trigger_error('Upload Error: ' . 'Error moving from temp dir', E_USER_NOTICE);
exit;
return false;
}
}只有这个内容
mysql 数据库默认编码也是utf8
中文文件名在网页显示和数据库显示都是正常的
但是就是文件保存在服务器文件夹里的文件名变成乱码的中文字符
比如 我上传一个文件 新建文档.txt 上传完PHP页面上看到的文件名是 新建文档-xxxxxx.txt (xxxxxx为编号防止重名) 然后我在mysql数据库中看到的表中 看到存储的文件名也是 新建文档-xxxxxx.txt 然后我在服务器内存储上传文件的文件夹下找到这个文件,文件名却为 鏂板缓鏂囨。-xxxxxx.txt "新建文档"的utf-8编码为 E696B0 E5BBBA E69687 E6A1A3 "鏂板缓鏂囨。"的 E696 B0E5 BBBA E696 87E6 A1A3,虽然找出了乱码的原因,但是不知道怎么修改,而且虽然存储文件夹内是乱码,但是通过php的下载功能,能够下载到这个文件,但是下载的默认名称是 鏂板缓鏂囨。-xxxxxx.txt,而且如果我将存储文件夹内这个文件重命名为新建文档-xxxxxx.txt 的话,下载就找不到该文件了。
知道产生的原因,想求问问怎么改能够存储正常而且不影响下载这样解释表达不知道清楚了么 上面那窜代码是我在该网站页面唯一找到的用到iconv的语句
if (!move_uploaded_file($file['temp'], iconv("utf-8","gbk",$CONFIG['uploads']['path'] . $file['name'])))//页面编码是utf8的话,这样写应该没问题你可以修改下如下试试:if (!move_uploaded_file($file['temp'], iconv("utf-8","GB18030",$CONFIG['uploads']['path'] . $file['name'])))下载的时候那个路径也是要转换的和上载的时候转化是一样的道理!希望能帮到你