PHP:下载文件脚本不适用于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');
这个脚本已经在多台浏览器(FF,Opera,IE6-9,Chrome,Safari)上的PC,Mac和Linux机器上进行过测试和检查,并且都可以正常工作,所以它必须是iPad做不同的事情。
我可以想象这与iPad实际上并没有文件结构来下载文件有关,但我不确定。
有没有人遇到过这个问题? 如果是这样,是否有修复?
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');
Apple已经锁定了iOS设备,因此无法访问文件结构。 因此,他们已禁用文件下载。
您可以强制用户将链接(由于登录...而将时间限制的ID)粘贴到任何第三方应用程序中,如GoodReader。 或者让他们在浏览器中查看doc文件。
链接地址: http://www.djcxy.com/p/46879.html