Почему этот скрипт загрузки PHP не работает только на Android

#php #android #download

#php #Android #Скачать

Вопрос:

У меня есть простой скрипт, который позволяет кому-то загрузить файл фильма на свое устройство. Код хорошо работает со всем, что я тестировал, за исключением Andriod. Устройство Android удаляет имя и расширение файла. Это может вызвать файл 2.qt или .bin. Почему это терпит неудачу?

 <?php

        if(isset($_GET['filename'])) {

            header('Content-Description: File Transfer');
            header('Content-Type: movie/quicktime');
            header('Content-Disposition: attachment; filename="'.basename($file).'"');
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Pragma: public');
            header('Content-Length: ' . filesize("$file"));
            ob_clean();
            flush();
            readfile("$file"); 
    } else {
        echo "Link: <a href='test.php?filename=test.mov'>Download Video</a>";
    }
?>
  

Ответ №1:

Потому что Android изначально не поддерживает Quicktime, технологию Apple.Также очень возможно, что клиент, используемый для загрузки этого приложения, не учитывает имя файла, установленное в http envelope в качестве имени, которое он использует для записи файла в файловую систему, поскольку ничто не заставляет его.

Комментарии:

1. Я понимаю, что Android изначально не поддерживает Quicktime, но это не моя забота здесь. Я просто хочу иметь возможность загружать файл, меня не интересует его воспроизведение. Вы говорите, что ничто не заставляет клиента называть имя файла именем, указанным в http-конверте. Есть ли способ заставить его?

2. Я прочитал предоставленную вами ссылку, я не думаю, что это помогает мне. Речь идет о написании приложения для Android на Java, что я не пытаюсь сделать. Я пытаюсь написать веб-приложение php, которое позволяет устройству загружать файл. Может быть, вы говорите, что я не могу заставить браузер использовать указанное мной имя файла, если я не напишу приложение для Android?

3. Да, это то, что должен был осветить фрагмент. Трудно сказать, каким образом рассматриваемый браузер (возможно, родной или Doplhin) реализовал операцию загрузки файла, но очень возможно, что он не использует указанный вами атрибут filename или переписывает его.

4. Проблема заключалась в том, что в именах файлов были пробелы, и Andriod это не нравится. Я удалил пробелы, и все в порядке.

Ответ №2:

Проблема заключалась в том, что в именах файлов были пробелы, а Android это не нравится. Я удалил пробелы, и все в порядке.