PHP:下载文件脚本无法在iPad上运行

时间:2012-01-13 10:37:57

标签: php ipad http-headers

我有一个我编写的文件下载脚本,它从public_html下面读取文件,并允许用户在检查用户是否已登录后下载它们,并且该文件是一个有效的文件供他们下载。

我最近遇到的一个问题是,在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');

此脚本已在多台浏览器(FF,Opera,IE6-9,Chrome,Safari)的PC,Mac和Linux计算机上经过测试和检查,所有这些都可以正常工作,因此它必须与iPad有所不同

我想这与iPad有关,实际上没有像下载文件那样的文件结构,但我不确定。

以前有人遇到过这个问题吗?如果有,是否有修复?

3 个答案:

答案 0 :(得分:12)

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');

答案 1 :(得分:0)

Apple已锁定iOS设备,因此您无法访问文件结构。因此,他们已禁用文件下载。

答案 2 :(得分:-1)

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