时间:2021-07-01 10:21:17 帮助过:22人阅读
终于完成,其中需要注意以下几点:
1.对于文件名是中文的文件,要记得转码,防止中文乱码的发生,因为大部分的主机的编码是GB2312的,而我们用的是UTF-8,
所以在操作之前要用iconv()函数进行转码,防止找不到文件而报错。
2.需要对所要下载的文件的格式进行判断,根据格式再写header()函数。
具体代码如下:
Cannot be used for ". $file_extension ." files!"); break; default: $ctype="application/force-download"; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Type: $ctype"); $header="Content-Disposition: attachment; filename=".$filename.";"; header($header); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); readfile($file); ?>
$ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "中文 文件名.txt"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); header('Content-Type: application/octet-stream'); if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"'); } else { header('Content-Disposition: attachment; filename="' . $filename . '"'); } ?>
产生的乱码错误,我认为,转码后中文乱码的问题基本就解决了。
本人经验,仅供参考!
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了PHP实现多种格式文件下载并解决乱码问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。