2012-01-13 166 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文件。