php文件下载,为什么文件名有中文的提示找不到文件??

来源:百度知道 编辑:UC知道 时间:2024/09/23 21:30:17
<?php
$file_name = "English.doc";
$file_dir = "/upfiles/";
if (!file_exists($file_dir . $file_name)) {
echo "can't find file!";
exit;
} else {
$file = fopen($file_dir . $file_name,"r");

Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);

echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
?>
请大虾指点指点!谢谢

如果网页编码是GB2312就不会出问题,因为系统中的文件名应该是GB2312编码的,否则就会文件找不到。因为不同编码的同一个汉字,其代码是不同的。

$file_dir = "/upfiles/";
这里不对,php读取文件,不能用这种文件的路径形式, 这样的话,他就会去目录/upfiles下找,而你要表达的意思是去网站的根目录下如(/var/www/html/upfiles)下找,所以你可以用相对路径,如../upfiles/之类的,如果想绝对路径的话就得写全了,如/var/www/html/upfiles,当然了,前面的用一个参数来表示最好了!