php上传文件中文名变乱码及下载时找不到文件

        做一个文件上传下载的功能,做好后上传英文名的文件没问题,上传中文名的文件后,文件名变成了乱码。后来查到,PHP默认是将文件名转成UTF-8编码来保存的,所以只要在上传完成后使用iconv将文件名转成GB2312编码的就可以了:

$file= iconv( "UTF-8" , "gb2312//IGNORE" , $file );
move_uploaded_file($_FILES['upfile']['tmp_name'], $file);
后来做下载功能时又发现总是提示找不到文件,当然是做了处理,让它自己报出来的:

if(!file_exists($file_dir . $file_name))
	{
	echo "<script>alert('文件找不到');</script>";
	exit;
	}
一开始总以为路径问题,后来怎么改也没用,突然想是否和编码有关,于是又将要下载的文件名做了一下转换:

$file_name = iconv("UTF-8" , "gb2312//IGNORE", $row['upfile']);
$file_dir = iconv("UTF-8" , "gb2312//IGNORE", "./uploadfile/");
$row是从数据库中取出的数据,其中有upfile这个字段,用来存上传文件名。这下就可以顺利下载了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值