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

Nic*_*ick 6 php http-headers ipad

我有一个我编写的文件下载脚本,它从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');
Run Code Online (Sandbox Code Playgroud)

这个脚本已经在多个浏览器(FF,Opera,IE6-9,Chrome,Safari)的PC,Mac和Linux机器上进行了测试和检查,所有这些都可以正常工作,所以它必须是iPad的不同之处.

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

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

Sau*_*abh 13

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');
Run Code Online (Sandbox Code Playgroud)

您的代码与我的唯一区别是我删除了附件标题只需删除这些标题 -

header("Content-Disposition: attachment; filename=\"file.doc\";" );
header("Content-Length: 50688");
Run Code Online (Sandbox Code Playgroud)

实际上,如果操作系统是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');
Run Code Online (Sandbox Code Playgroud)