我目前工作的一个PHP脚本,允许您从您的移动设备通过访问一个链接下载媒体内容(视频,音频,图片...)。 (即http://www.my-web-site.com/download.php?id=7ejs8ap )我的脚本工作非常贝尔,当我最近手机(三星Galaxy S,iPhone 4S的,其他一些测试它... ),但在我的旧手机三星C3050时发生错误。 我想下载媒体只是一个音频的MP3文件,我通常下载容易。
该错误显示为“未知的内容类型。” 所以,我唯一的HTTP标头的Content-Type为“应用程序/强制下载”,我试评并再次尝试。 然后,它的工作原理。 但现在,我目前问的这个Content-Type的手段,如果它可以强制为他人手机。 我测试没有对iPhone 4的Content-Type和它的作品,但我不知道这兼容所有移动的。
有人可以解释我的Content-Type是如何工作的,为什么这不是一个标准的MIME或其他一切可以帮我可以肯定这是一个optionnal的Content-Type每次下载,不管该文件,浏览器或设备我我下载吗?
感谢大家。
这是我的PHP头一起发送:
<?php
//Assume that $filename and $filePath are correclty set.
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$filename.'"');
// header('Content-Type: application/force-download'); Non-standard MIME-Type, incompatible with Samsung C3050 for example. Let it commented
readfile($filePath);
?>
编辑:我只是想用索尼的Xperia,以及下载不成功:我只看到我的文件“HTML编码”字节我想下载。 我怎样才能知道哪些内容类型我有,如果应用程序/八位字节流或应用程序/力下载不起作用使用?
Content-Type: application/force-download
的意思是“我的Web服务器,我要骗你(浏览器),什么这个文件,这样你不会把它作为一个PDF / Word文档/ MP3 /不管和提示用户保存的神秘文件到磁盘,而不是”。 这是一个肮脏的黑客打破可怕的,当客户端没有做“保存到磁盘”。
使用任何介质您正在使用(如正确的MIME类型audio/mpeg
为MP3)。
使用Content-Disposition: attachment; etc etc
Content-Disposition: attachment; etc etc
,如果你想鼓励客户端下载它,而不是下面的默认行为的标题。
要下载文件,请使用如下代码...在$文件变量位置存储文件名。 它支持所有的MIME类型
$file = "location of file to download"
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
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);
了解MIME类型,请参考此链接: http://php.net/manual/en/function.mime-content-type.php
application/force-download
不是一个标准的MIME类型。 这是由某些浏览器所支持的黑客攻击,增加相当最近。
你的问题并没有真正使任何意义。 这就像问为什么Internet Explorer 4中不支持最新的CSS 3的功能。
文章来源: Utility of HTTP header “Content-Type: application/force-download” for mobile?