PHP - 为Android设备动态生成文件

时间:2014-09-04 18:00:20

标签: php android header on-the-fly

我在这里已经阅读了一些答案,但我似乎无法让我的PHP脚本工作。 我从一个提交回同一页面的表单生成一个text或csv文件(它取决于用户选择的内容)。 该脚本在我的桌面上的Chrome,IE,Mozilla上工作正常,但是当我在Android上试用股票浏览器时,我得到一个附件有我脚本源的文件。 如果我尝试使用NEXT浏览器,我会得到一个具有正确文件名的文件,但内部再次是我脚本的来源。

我已阅读以下链接,但我无法使其正常工作 http://www.digiblog.de/2011/04/android-and-the-download-file-headers/

我的http标题如下

header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . basename($FileName) . "\"");
header("Content-Length: " . filesize($FileName));
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Connection: close");
print $Content;
exit();

-----更新1 ----

我写了下面的代码来测试一下

<?php
$get = $_GET['get'];
if ($get == 1) {
$content = 'This is a line of text!';
$filename = 'superfile';
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . basename($filename) . ".TXT\"");
header("Content-Transfer-Encoding: binary");
header("Expires: 0");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Connection: close");
echo $content;
exit;

}
echo '<html>
<head>
    <title>Test</title>
</head>
<body>
    <form method="get" action="index.php"
    <label>Get</label>
    <input type="text" name="get"/>
    <input type="submit" name="ok" value="Send"/>
    </form>
</body>
</html>';
?>

当我使用get方法发送表单时,一切正常,当我使用post时,我会看到你看到的html源代码,就像我对原始脚本的问题一样。

-----更新2 -----

Okkkkk,现在有更多信息,我认为它与Android bug有关,请查看以下链接

http://roscopeco.com/2013/04/android-and-the-form-post-download-problem/

等待解决此问题的建议,我需要方法发布,因为我传递了太多varialbes而且我不想在地址栏上找到大丑的网址。

1 个答案:

答案 0 :(得分:0)

好吧,我不想尝试太多,所以我得到了用户代理,我将我的帖子表单改为get。这不是一个很好的解决方案,但工作已经完成。