之前一直乱码,转换格式后下载没问题了,只是文件名会忽略开头的中文,是什么问题?
例如文件名是(爱神的箭123.doc)下载的话文件名变成123.doc了,文件的内容是完整的
<?php
//文件的下载
//文件名
$file_name="张飞.jpg";
//如果名称为中文的,必须将名称改成gb2312的编码格式
$file_name=iconv('utf-8','gb2312',"$file_name");
//打开文件,并且以只读的形式
$file=fopen($file_name,'r');
//确定文件的大小
$size=fileSize($file_name);
//告诉浏览器要传输的是一个流
header("Content-type:application/octet-stream");
//告诉浏览器传送的大小
header("Accept-Length:$size");
//告诉浏览器传输的东西要保存,保存名字是$file_name
header("Content-Disposition:attachment;filename=$file_name");
//让浏览器去读文件,记得echo,记得echo,记得echo
echo fread($file,$size);
//关闭文件
fclose($file);
//header(Content-type:application/jpg);
?>
上面的东西纯手打,如果万幸解决问题,请把奖励给上,作为我们程序猿不懈努力的动力。
浏览器下载的文件名称要是包含了中文的话, 必须把中文从UTF-8转成GBK编码的, 这个是由浏览器决定的