2013-06-12 69 views
0

我想下載與Android文件,所以我流的文件與PHP具有以下功能流文件到Android客戶端

function stream($fileName,$fileSize,$fName){ 
     //header("Pragma:public"); 
     //header("Expires:0"); 
     //header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
     //header("Cache-Control:private",false); 
     header("Content-Disposition:attachment;filename=\"".$fName."\";"); 
     header("Content-Type:application/octet-stream"); 
     header("Content-Transfer-Encoding:binary"); 
     header("Content-Length:".$fileSize); 
     readfile($fileName); 
} 

但不能下載的Android設備上運行。在我的電腦上,這不是問題。我已經在http://www.digiblog.de/2011/04/android-and-the-download-file-headers/上找到了解決方案,但這並沒有幫助我。

回答

1

正如my blog posting that you cite提到的,你下載的Android設備上的成功取決於多種因素,無法通過閱讀你的代碼被告知:

  • 你$文件名必須包含大寫擴展。

  • 您打電話下載的純URL必須包含啓動下載所需的所有信息。可能不涉及POST參數,它們不會被轉發到Android下載管理器,因此下載將失敗。 GET參數(查詢字符串)都可以。

  • 此外,您並沒有遵守所有詳細信息中的博文:
    Content-Disposition標題後面有一個分號,它是致命的。

我還建議只使用Content-Type和Content-Disposition標題。當你在Android上使用它時,你仍然可以添加任何你想發送的其他頭文件。但是,當你完成時,不要忘記在Android上重新測試(如果可能的話,多個版本)。對於其中一些頭文件,Android真的很挑剔(或者我應該說「bitchy」?)。

如果所有這些都不起作用,您將不得不提供更多關於您的案例的信息。當你嘗試時會發生什麼?你打電話到哪個網址。什麼是傳遞給你的函數的參數?