为什么这个PHP下载脚本只在Android上失败
我有一个简单的脚本,允许人们下载电影文件到他们的设备。除了Andriod之外,我测试过的所有代码都运行良好。Android设备会破坏名称和文件扩展名。它可能会调用文件2.qt或.bin。为什么会失败为什么这个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
<?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不喜欢这样。我删除了空格,一切都很好。