2013-06-12 28 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”?)。

如果所有这些都不起作用,您将不得不提供更多关于您的案例的信息。当你尝试时会发生什么?你打电话到哪个网址。什么是传递给你的函数的参数?