2016-06-19 3 views
0

Я использую PHP для компиляции приложения на сервере apache на основе ввода, предоставленного пользователем, а затем предоставляю приложение им с помощью метода readfile().
Проблема, с которой я столкнулся, заключается в том, что вместо фактической загрузки приложения файл .apk открывается как текстовый файл.
enter image description here
Вывод мусора при загрузке apk с сервера с использованием PHP

Я добавил андроид типа приложения мимов в коде PHP.
Мой 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(); 
} 
?> 

Любая помощь будет оценена.

ответ

1

Так что я сделал, а не возвращаться приложение из скрипта PHP, я вернул его URL-адрес для вызова AJAX.

Оттуда я перешел к этому URL-адресу, и загрузка началась автоматически.

PHP код:

<?php 
{ 
    echo "http://server_ip/release/".$uid."/releaseapk.apk"; 
} 
?> 

Ajax кал:

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

Думаю, вы можете решить это, удалив эхо. Не выводить на страницу перед отправкой заголовков.

+0

ли закомментировал эхо заявление тоже. Но все та же ошибка. –

+1

Я бы начал с одного из примеров на этой странице http://php.net/manual/en/function.readfile.php и получил это на работу, а затем добавил дополнительные вещи по одному. –

+0

Thanks, Но я исправил его другим способом и ответил на вопрос –

1

искаженный выход, вызванное буфером не является чистым, поиск для вывода на странице перед заголовками или Попробуйте использовать ob_end_clean() вместо ob_clean() и поставить его перед вашим header()

+0

Hey, Выполнение этого остановило вывод кода мусора, но загрузка не началась. –