我有一个简单的脚本,允许某人将电影文件下载到他们的设备。代码在我测试过的所有设备上都运行良好,除了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不喜欢这样。我删除了空格,一切都很好。