php下载文件并且兼容IE浏览器

今天自己写了一个php下载文件的小例子,测试下php代码实现下载文件,并解决文件名乱码问题。
  准备3个文件:index.html   word.php   help.doc (被下载的文件)
  其中  index.html  就是一个点击下载文件的链接 即:
' a href="word.php?file=help&type=doc">测试手册下载>'
       
        下来是程序处理  word.php文件

//php下载功能
header('Content-Type: text/html;charset=utf-8');
if (!isset($_GET['file']) || !isset($_GET['type']))
{
print 'no file selsect';
exit();
}
$file = $_GET['file'] . '.' . $_GET['type'];
//iconv('UTF-8','GB2312','测试手册.doc')   将字符串按要求的字符编码来转换
//mb_convert_encoding('测试手册.doc', 'GB2312', 'UTF-8')  转换字符的编码
//@ 该符号错误控制运算符前缀
if (@$fp = fopen($file, 'r'))
{
header('content-type: octet/stream');
if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
{
header('Content-Disposition: filename=' . mb_convert_encoding('help测试手册.doc', 'GB2312', 'UTF-8'));
}
else
{
header('Content-Disposition: filename=' . mb_convert_encoding('测试手册.doc', 'GB2312', 'UTF-8'));
}
while(!@feof($fp))
{
echo fread($fp, 1024);
}
exit();
}
else
{
print '此文件不存在';
}


通过上面的例子基本可以简单的实现php下载文件。
其实完整代码就这些
设置为一个下载类型:
      header('Content-Type: application/octet-stream'); 
   header('Content-Disposition: attachment; filename="example.zip"');
 header('Content-Transfer-Encoding: binary'); // load the file to send
   readfile('example.zip');

现在你可以使用上面的例子试试了,测测简单的 下载功能吧。

你可能感兴趣的:(PHP)