Warning: filesize() [function.filesize]: stat failed for D:/AppServ/www/cultivate/uploads/liusong_1270186268_演示文稿.ppt 在我的电脑地址栏里可以通过D:/AppServ/www/cultivate/uploads/liusong_1270186268_演示文稿.ppt,这个路径访问到这个文件
echo filesize('D:/AppServ/www/cultivate/uploads/liusong_1270186268_演示文稿.ppt');还有想问一句如果是放在服务器上,filesize的函数路径是用硬盘路径访问,还是用域名路径访问?
比如http://192.168.0.1/dir/filename,还是用服务器的硬盘路径作为filesize的参数?
echo filesize('D:/AppServ/www/cultivate/uploads/liusong_1270186268_演示文稿.ppt');还有想问一句如果是放在服务器上,filesize的函数路径是用硬盘路径访问,还是用域名路径访问?
比如http://192.168.0.1/dir/filename,还是用服务器的硬盘路径作为filesize的参数?
echo filesize(iconv('UTF-8','GB2312','D:/AppServ/www/cultivate/uploads/liusong_1270186268_演示文稿.ppt'));
?>
现在时能显示文件大小了,但是下载下来,文件名变乱码了,中文的变为乱码
$fileName = $_GET['filename'];
$src = iconv('UTF-8','GB2312',CULT_ROOT.'uploads/'.$fileName);
$filesize = filesize($src);
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/force-download");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename={$fileName}");
header("Content-Transfer-Encoding: binary ");
header("Content-Length: ".$filesize);
//echo filesize(iconv('UTF-8','GB2312',$src));
//var_dump(filesize($src));
$file = fopen($src, "r");
while(!feof($file))
{
$buf = fread($file, 4096);
if( $buf )
{
echo $buf;
}
else
{
break;
}
}
fclose($file);
比如简体中文版Windows上IE一般对gb2312识别比较好,firefox则对utf-8支持很好,你可以多找几种编码试试
另外filename最好做rawurlencode,但是有时候浏览器也会识别不出encode
我以前搞过这个,弄了两天试了很多方法也没弄好,也许还有我没想到的方法吧,建议别用中文