如何在移动浏览器上使用 PHP 强制下载文件?

Posted

技术标签:

【中文标题】如何在移动浏览器上使用 PHP 强制下载文件?【英文标题】:How to Force a file to download using PHP on mobile Browsers? 【发布时间】:2011-11-19 15:57:16 【问题描述】:

我想编写一个 php 脚本来在移动浏览器上下载一些文件(扩展名 - .apk、.dcm、.pdf、.zip 等...)。我已经编写了一个 php 代码来下载这些文件,并且它在所有浏览器(不是移动浏览器)上都可以正常工作。但我使用 HTC 手机进行了尝试,它试图打开文件而不是下载(比如打开网页)。

如何在移动浏览器上启用下载?

谢谢

PS: 我就是这样做的。 我使用 jquery 代码将一些参数发送到 php 文件,它会返回相应的下载文件路径。

jQuery 代码 sn-ps 是:

$.post('saveData.php', name: name.val(), email: email.val(), phone:phone.val(), address:address.val(), version:vers, swVersion:swvers, type:type , 
function(data) 
                       
    var links = data;
    document.body.innerhtml += "<iframe src='" + links + "' style='display:hide;' ></iframe>";
);

“links”变量包含从 php 文件返回的下载路径。 iframe 允许弹出下载窗口。但它不适用于移动浏览器。

【问题讨论】:

您是否发送了正确的 mime 类型标头?? 这信息太少了。请显示一些代码 我就是这样做的。我使用 jquery 代码将一些参数发送到 php 文件,它将返回适当的下载文件路径。 jQuery 代码 sn-ps 为:$.post('saveData.php', name: name.val(), email: email.val(), phone:phone.val(), address:address.val(),版本:vers, swVersion:swvers, type:type , function(data) var links = data; document.body.innerHTML += ""; ); “links”变量包含从 php 文件返回的下载路径。 iframe 允许弹出下载窗口。 【参考方案1】:

尝试以下标题:

header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="filename"');

这个想法是将内容类型设置为浏览器不知道如何打开的内容 - 这样它就会显示保存对话框。您可以使用实际的 MIME 类型进行尝试,它应该可以工作,但我现在无法测试它。

【讨论】:

赞成,但建议您提出建议而不是问题 这仍然在 iPhone 的浏览器中播放 MP3。我希望有一种方法可以允许下载但阻止流式传输。

以上是关于如何在移动浏览器上使用 PHP 强制下载文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在支持 CSS3 的网站上支持更多的移动视口宽度并强制移动浏览器使用正确的宽度?

PHP如何强制下载文件

使用移动浏览器(Unity webgl)时如何强制横向模式?

强制使用 PHP 下载文件

PHP zip 下载错误

使用 PHP 内置函数 get_browser() 判断是否是移动浏览器