登录
立即注册
首页
>
绿虎论坛
>
历史版块
>
编程
>
PHP
>
讨论/求助
怎么实现下载功能?
王鸿杰
@Ta
2012-03-27
2479点击
如题,高手教下!
隐藏样式
查看源码
回复列表(6|
隐藏机器人聊天
)
1
请叫我杨先森
@Ta
/ 2012-03-27 /
样
/
源
不知,请详细说明
2
老虎会游泳
@Ta
/ 2012-03-27 /
样
/
源
<?php
Header('Content-type: application/octet-stream');
//之后的任何输出都是下载
//不要用Windows自带记事本编辑UTF-8的PHP文件,否则由于BOM,下载功能失效
3
老虎会游泳
@Ta
/ 2012-03-27 /
样
/
源
在该例子中,使用了Header()输出HTTP头信息Content-type(内容的MIME类型)。
决定浏览器直接显示或提示下载的并非网页的文件后缀,而是MIME类型(如text/html这样的)。
如果把zip的Content-type设为text/plain,浏览器就会认为它是txt而直接显示,虽然网址的文件后缀是.zip。
所以你只要发下载类型的Content-type,PHP输出的内容也可以被下载。
同样的,PHP输出的内容也可以当做图片显示,只要发image/jpeg,如验证码就如此。
4
老虎会游泳
@Ta
/ 2012-03-27 /
样
/
源
你可以百度一下MIME类型大全,给文件合适的MIME类型,如zip是application/zip。如果找不到合适的,通用的下载类型是application/octet-stream
另外,你可以利用以下这个特性使php输出的文件有合适的文件名:
/wap/read.php/abcd.mp3?id=bbs
目标另存它就是abcd.mp3(中文要Urlencode())。大部分电脑浏览器和UC还支持一种HTTP头比设置下载的文件名,由于Q浏冒浏不支持,我忘了,你可以百度一下。
5
老虎会游泳
@Ta
/ 2012-03-27 /
样
/
源
请从1楼起往上阅读。
6
请叫我杨先森
@Ta
/ 2012-03-27 /
样
/
源
纯手打?强啊!~
添加新回复
回复需要
登录
。
Header('Content-type: application/octet-stream');
//之后的任何输出都是下载
//不要用Windows自带记事本编辑UTF-8的PHP文件,否则由于BOM,下载功能失效
决定浏览器直接显示或提示下载的并非网页的文件后缀,而是MIME类型(如text/html这样的)。
如果把zip的Content-type设为text/plain,浏览器就会认为它是txt而直接显示,虽然网址的文件后缀是.zip。
所以你只要发下载类型的Content-type,PHP输出的内容也可以被下载。
同样的,PHP输出的内容也可以当做图片显示,只要发image/jpeg,如验证码就如此。
另外,你可以利用以下这个特性使php输出的文件有合适的文件名:
/wap/read.php/abcd.mp3?id=bbs
目标另存它就是abcd.mp3(中文要Urlencode())。大部分电脑浏览器和UC还支持一种HTTP头比设置下载的文件名,由于Q浏冒浏不支持,我忘了,你可以百度一下。