1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php
$file_name = "哈哈.jpg" ; //需要下载的文件
$file_name =iconv( "utf-8" , "gb2312" , "$file_name" );
$fp = fopen ( $file_name , "r " ); //下载文件必须先要将文件打开,写入内存
if (! file_exists ( $file_name )){ //判断文件是否存在
echo "文件不存在" ;
exit ();
}
$file_size = filesize ( "a.jpg" ); //判断文件大小
//返回的文件
Header( "Content-type: application/octet-stream" );
//按照字节格式返回
Header( "Accept-Ranges: bytes" );
//返回文件大小
Header( "Accept-Length: " . $file_size );
//弹出客户端对话框,对应的文件名
Header( "Content-Disposition: attachment; filename=" . $file_name );
//防止服务器瞬时压力增大,分段读取
$buffer =1024;
while (! feof ( $fp )){
$file_data = fread ( $fp , $buffer );
echo $file_data ;
}
//关闭文件
fclose( $fp );
?>
|
If the file name is Chinese, the php function cannot recognize the Chinese file name. Generally, if the program encoding is utf-8, the php function is relatively old and can only recognize gb2312 encoded Chinese, so use iconv("original encoding" for Chinese ", "Encoding to be converted to", "String to be transcoded") function can be transcoded.
For example, convert a string from utf-8 to gb2312
$file_name=iconv(“utf-8”,”gb2312”,”$file_name”);