我正在使用PHP根据用户提供的输入在Apache服务器上编译应用程序,然后使用readfile()
方法向他们提供应用程序。
我面临的问题是,不是实际下载应用程序,而是将.apk文件作为文本文件打开。
我在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();
}
?>
任何帮助都将不胜感激。
答案 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