为什么这个PHP下载脚本只在Android上失败

为什么这个PHP下载脚本只在Android上失败,php,android,download,Php,Android,Download,我有一个简单的脚本,允许人们下载电影文件到他们的设备。除了Andriod之外,我测试过的所有代码都运行良好。Android设备会破坏名称和文件扩展名。它可能会调用文件2.qt或.bin。为什么会失败 <?php if(isset($_GET['filename'])) { header('Content-Description: File Transfer'); header('Content-Type: movie/qu

我有一个简单的脚本,允许人们下载电影文件到他们的设备。除了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>";
    }
?>

用于下载此应用程序的客户端也很可能不遵守http信封上设置的文件名,即它将文件写入文件系统时使用的名称,这是有可能的

用于下载此应用程序的客户端也很可能不遵守http信封上设置的文件名,即它将文件写入文件系统时使用的名称,因为存在这样的情况

问题是文件名有空格,Android不喜欢这样。我删除了空格,一切正常。

问题是文件名有空格,Android不喜欢这样。我删除了空格,一切都很好。

我知道Android本机不支持Quicktime,但这不是我关心的问题。我只是想能够下载文件,我不关心播放它。您说没有任何东西强迫客户端将文件名命名为http信封中提供的名称。有没有办法强迫它呢?我读了你提供的链接,我认为它对我没有帮助。它说的是用Java为Android编写一个应用程序,这不是我想要做的。我正在尝试编写一个php web应用程序,允许设备下载文件。也许你是说除非我写一个android应用程序,否则我不能强迫浏览器使用我提供的文件名?是的,这就是这个片段的目的。很难说所讨论的浏览器(可能是本机浏览器或Doplhin浏览器)是如何实现文件下载操作的,但很可能它没有使用您提供的filename属性或重写它。问题是文件名有空格,Andriod不喜欢这样。我删除了空间,一切都很好。我知道Android在本机上不支持Quicktime,但这不是我关心的问题。我只是想能够下载文件,我不关心播放它。您说没有任何东西强迫客户端将文件名命名为http信封中提供的名称。有没有办法强迫它呢?我读了你提供的链接,我认为它对我没有帮助。它说的是用Java为Android编写一个应用程序,这不是我想要做的。我正在尝试编写一个php web应用程序,允许设备下载文件。也许你是说除非我写一个android应用程序,否则我不能强迫浏览器使用我提供的文件名?是的,这就是这个片段的目的。很难说所讨论的浏览器(可能是本机浏览器或Doplhin浏览器)是如何实现文件下载操作的,但很可能它没有使用您提供的filename属性或重写它。问题是文件名有空格,Andriod不喜欢这样。我删除了空格,一切都很好。