首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP头"Content-Type: application/force-download“在手机上的实用工具?

HTTP头"Content-Type: application/force-download“在手机上的实用工具?
EN

Stack Overflow用户
提问于 2012-05-16 17:34:53
回答 3查看 108.3K关注 0票数 46

我目前正在开发一个PHP脚本,它允许你下载媒体内容(视频,音频,图片...)从您的移动设备访问链接。(例如http://www.my-web-site.com/download.php?id=7ejs8ap)当我在最近的手机(三星Galaxy S,iPhone 4S,其他一些)上测试时,我的脚本工作得非常好。但我的旧手机三星C3050出现了一个错误。我想要下载的媒体只是一个音频mp3文件,我通常很容易下载。

错误看起来是“未知的内容类型”。因此,由于我惟一的HTTP头Content-Type是"application/force-download",所以我尝试对其进行注释,然后重试。然后,它就可以工作了。但现在,我正在问这个Content-Type是什么意思,以及它是否可以对其他移动设备强制执行。我在iPhone 4上没有使用Content-Type进行了测试,它可以工作,但我不确定这种兼容性是否适用于所有移动设备。

谁能给我解释一下Content-Type是如何工作的,为什么这不是一个标准的MIME或其他任何可以帮助我确保每次下载的Content-Type都是可选的Content-Type,无论我下载的是文件、浏览器还是设备?

谢谢大家。

下面是我发送的PHP头文件:

代码语言:javascript
复制
<?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);
?>

编辑:我刚刚尝试使用Sony Xperia,但下载并不成功:我只看到我想要下载的文件的“html编码”字节。如果application/octet-stream或application/force-download不起作用,我怎么知道我必须使用什么内容类型?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-16 18:34:44

Content-Type: application/force-download的意思是“我,web服务器,会对你(浏览器)撒谎,告诉你这个文件是什么,这样你就不会把它当成PDF/Word文档/mp3/任何东西,而是提示用户将这个神秘的文件保存到磁盘”。当客户端不执行“保存到磁盘”时,这是一个可怕的破解。

对您正在使用的任何媒体使用正确的mime类型(例如,mp3的audio/mpeg )。

如果您希望鼓励客户端下载它,而不是遵循默认行为,请使用Content-Disposition: attachment; etc etc标头。

票数 129
EN

Stack Overflow用户

发布于 2012-05-16 17:42:06

要下载文件,请使用以下代码...将文件名和位置存储在$file变量中。它支持所有mime类型

代码语言:javascript
复制
$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

票数 16
EN

Stack Overflow用户

发布于 2012-05-16 18:36:34

application/force-download不是标准的MIME类型。这是最近才添加的一些浏览器支持的一种技巧。

你的问题真的没有任何意义。这就像在问为什么Internet Explorer4不支持最新的CSS3功能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10615797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档