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


Why is this PHP download script failing only on Android

我有一个简单的脚本,允许某人将电影文件下载到他们的设备。代码在我测试过的所有设备上都运行良好,除了android。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>";
    }
?>

因为Android本身不支持Quicktime这一苹果技术。也很有可能,用于下载此应用程序的客户端不尊重http信封上的文件名集,因为它用于将文件写入文件系统,因为没有什么强制它这样做。

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