php下载文件

时间:2013-03-25 17:42:49

标签: php download

我需要在jquery移动应用程序中呈现文件列表(在桌面和移动设备上运行)。主要是从桌面我需要从列表中下载文件。我有一个简单的href如下:

<a href="download.php?file=test.txt">test.txt<a>

问题是当用户点击链接时,会显示文件的实际内容。我希望用户能够在本地保存文件。我相信我正确设置标题。这是标题的Firebug转储:

Response Headers
Accept-Ranges   bytes
Cache-Control   public, must-revalidate, post-check=0, pre-check=0
Connection  Keep-Alive
Content-Disposition attachment; filename="test.txt"
Content-Length  95
Content-Type    application/octet-stream
Date    Mon, 25 Mar 2013 17:35:26 GMT
Expires -1
Keep-Alive  timeout=5, max=99
Pragma  public
Server  Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips
Request Headers
Accept  text/html, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cookie  PHPSESSID=bbf2549f793aed8565b44d532a3088dc; path=%2F; fileDownload=true
Host    192.168.1.225
Referer http://192.168.1.225/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
X-Requested-With    XMLHttpRequest

我正在通过Windows机器上的浏览器进行测试。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

答案相对简单。 Jquery mobile使所有链接都成为Ajax请求(我已经忘记了)。解决方案是在链接中添加“rel =”external“以使其成为非ajax链接,如下所示:

<a href="download.php?file=test.txt" rel="external">test.txt<a>

感谢Alvaro G. Vicario指出我正确的方向。

答案 1 :(得分:0)

你也可以在jQuery Mobile之前添加这个脚本,它对我有用。

<script>
 $(document).bind("mobileinit", function(){
     $.mobile.ajaxEnabled = false;
 }); 
</script>