2011-08-01 32 views
0

下面的代碼在桌面瀏覽器(Chrome,FF)上正常工作,但是當從Android移動設備(HTC Evo,Galaxy S)設備執行時,該文件將被下載但空。我已經添加了下面一行到我的.htaccess文件...從PHP文件下載到Android移動設備時爲空。

AddType application/vnd.android.package-archive .apk 

...和下​​載作品,如果我直接從一個HTML錨鏈接到.apk文件預期。

我需要通過PHP腳本提供下載,以便我可以更新數據庫記錄。以下PHP方法,甚至還可以在BlackBerry設備上按預期:

public function download($file) 
{ 
    if (!is_readable($file)) { 
     return false; 
    } 
    header('Content-Type: application/vnd.android.package-archive'); 
    header('Content-Disposition: attachment; filename="test.apk"'); 
    header('Content-length: ' . filesize($file)); 
    readfile($file); 
    return true; 
} 

回答

0

廉價的解決方案:遠程登錄到服務器,說話HTTP直接,見頭的區別是什麼,從你的PHP腳本下載VS從下載之間服務器。

您還可以查看諸如將用戶重定向到文件,或者想要獲得複雜的X-sendfile等內容。

你也可以看看這個問題的答案:Fastest Way to Serve a File Using PHP

+0

我要在看如何遠程登錄,做你所描述的東西,但我並檢查文件的標題與cURL和301之後,我得到了一個200 OK並最終在.apk文件。不幸的是,我不能將用戶重定向到文件,因爲我需要保護它。使情況複雜化的事實是,我正在使用網格服務,並且沒有太多的自由,通過SSH(我被監禁在...)。我無法圍繞爲什麼它在除Android之外的每個瀏覽器/設備組合中都能正常工作。 – jondbaker

+0

這將是奇怪的標題等 - 這就是爲什麼我建議看看與telnet的區別。 像X-sendfile這樣的東西讓文件保護,還有其他一些方法。 – Jords

+0

感謝您的回覆。只有在使用默認的Android瀏覽器(安裝FF和Opera解決了問題)時才存在問題,但不幸的是,項目流需要默認瀏覽器。我發現這篇文章http://forum.xda-developers.com/archive/index.php/t-972708.html表明,默認瀏覽器將不會允許.APK下載而無需安裝第三方應用程序(Astro File經理爲我工作)來覆蓋默認的瀏覽器過濾器。最後,客戶選擇只允許該文件位於公用文件夾中,以便將用戶重定向到該文件夾​​。 – jondbaker

相關問題