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)