使用PHP从服务器下载apk时的垃圾输出

时间:2016-06-19 23:27:20

标签: javascript php android apache lamp

我正在使用PHP根据用户提供的输入在Apache服务器上编译应用程序,然后使用readfile()方法向他们提供应用程序。
我面临的问题是,不是实际下载应用程序,而是将.apk文件作为文本文件打开。
enter image description here

我在PHP代码中添加了android app mime类型。
我的PHP代码是:

<?php
echo "Please wait while the app is being generated, it can take around 10 minutes for the build to finish.The completed app will be mailed to you ";

if(isset($_POST['timestamp']))
{
$uid = $_POST['timestamp'];
exec("sudo python /var/www/html/appgenserver.py $uid");

header("Content-Description: File Transfer");
header("Content-Type: application/vnd.android.package-archive");
header("Content-Transfer-Encoding: Binary");        //Adding or removing this hass no effect
header('Content-Disposition: attachment; filename="Foo.apk"');
ob_clean();
flush();
readfile("/var/www/html/".$uid."/releaseapk.apk");
exit();
}
?>

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

我认为你可以通过删除回声来解决它。在发送标题之前不要输出到页面。

答案 1 :(得分:1)

缓冲区导致的乱码输出不干净,在标题之前搜索页面上的输出或尝试使用ob_end_clean()代替ob_clean()并将其放在header()之前

答案 2 :(得分:1)

所以我做的是,而不是从PHP脚本返回应用程序,我将它返回到AJAX调用的URL。

从那里我导航到该URL并自动启动下载。

PHP代码:

$.ajax({
        type: "POST",
    url: "/test.php",
    data: { timestamp : timestamp },
        success: function(response){
          console.log("Success",response);
          window.location = response;
    }
      });

Ajax cal:

null