小菜问个问题,描述如下:用户上传一个文件,比如叫“吃饭.doc”,上传后我改成了“4800b901c6a533c39e0ee05557a04009.doc”(md5文件名,防止中文乱码),原文件名存在数据库里,生成的记录的fid为888。然后用户来下载(请求为down.php?fid=888),我想还是给用户“吃饭.doc”这个文件,down.php怎么写?××××××××××××××××××××××××××新学习PHP不久,想写个文档管理的小东西,到这里卡住了,哪位帮忙指点下迷津吧
调试欢乐多
我看到列表里有个相关的帖子,是用header来转向的,不过就是要把文件拷贝一遍,有点麻烦
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
{
header('Content-Type: "'.$mime.'"'); //$mine是文件类型
header('Content-Disposition: attachment; filename="'.$filename.'"'); //这里的名字,你传入原文件名就行了
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data)); //这里data是数据
}
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
} exit($data); //最后输出文件内容。
最好加上
Content-Language:gbk(根据你自己的编码)以前测试过,遇到一个很纠结的问题,不加这个的时候,有些浏览器保存后文件名是乱码,加上之后又有一部分浏览器是乱码了,然后又继续改进rawurlencode($filename),结果仍然是有些浏览器不正常……
第二个字段 文件原名
第三个字段 文件名这样不就OK了。