2012-01-13 54 views
6

我有一个文件下载脚本,我已经写了,它从下面的public_html中读取文件,并允许用户在检查用户是否已登录并且该文件是他们下载的有效文件。PHP:下载文件脚本不能在iPad上工作

我最近遇到的一个问题是,在iPad上它只是在点击链接时没有做任何事情。

示例下载文件的代码所有的检查已经完成后:

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header("Content-Type: application/msword"); 
header("Content-Disposition: attachment; filename=\"file.doc\";"); 
header("Content-Length: 50688"); 

readfile(SITE_PATH .'/files/file.doc'); 

这个脚本已经过测试,并检查了在多个浏览器的PC,Mac和Linux机器(FF,歌剧,IE6-9,Chrome浏览器,Safari),并且所有程序都可以正常工作,所以它必须是iPad做不同的事情。

我可以想象这与iPad没有实际的文件结构来下载文件有关,但我不确定。

有没有人遇到过这个问题?如果是这样,是否有修复?

+0

无关:您有两个Content-Type标题字段。选一个。此外,Content-Transfer-Encoding不是一个HTTP头字段。 – 2012-01-13 17:57:25

+0

@JulianReschke删除了那些,似乎没有效果。更新的问题反映。 – Nick 2012-01-13 22:22:23

回答

11

iOS的Safari浏览器不支持文件下载..

更新:但是,如果你正在寻找打开iPad上的.doc文件,然后是的..你可以做到这一点...

使用后 -

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header("Content-Type: application/msword"); 


readfile('file.doc'); 

在你的代码,唯一的区别和我的是我删除了附件 头只是删除这些头 -

header("Content-Disposition: attachment; filename=\"file.doc\";"); 
header("Content-Length: 50688"); 

其实你可以检查客户端的操作系统,如果操作系统是iOS的话不下载添加页眉这样的 -

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header("Content-Type: application/msword"); 

if (!Operating_System_Is_IOS) 
{ 

    header("Content-Disposition: attachment; filename=\"file.doc\";"); 
    header("Content-Length: 50688"); 

} 

readfile(SITE_PATH .'/files/file.doc'); 
+0

通常iPad会打开这些文档(如果直接链接)。那么,我能做些什么来模仿这种行为?即打开而不是尝试下载。 – Nick 2012-01-13 11:09:18

+0

检查更新的答案! – Saurabh 2012-01-19 09:04:08

+0

太棒了,就是我在找的东西,谢谢:) – Nick 2012-01-19 09:12:20

0

苹果公司已经锁定了iOS设备,使您无法访问文件结构体。因此,他们已禁用文件下载。

-1

您可以强制用户粘贴到任何第三方应用程序,如GoodReader的链接(由于登录...)中的链接(带有时间限制的ID)。 或者让他们在浏览器中查看doc文件。