HTTP“Content-Disposition:附件”并在 iOS 网络浏览器上下载文件

Posted

技术标签:

【中文标题】HTTP“Content-Disposition:附件”并在 iOS 网络浏览器上下载文件【英文标题】:HTTP "Content-Disposition: attachment" and downloading files on iOS web browser 【发布时间】:2011-12-23 19:49:11 【问题描述】:

我希望我的用户能够下载 PDF 文件并让浏览器将其视为文件,而不仅仅是显示它(即它有一个文件名,用户可以选择保存等)。以下标头似乎适用于除 ios 之外的任何地方:

Content-Disposition: attachment; filename=file.pdf

iOS 只是忽略这一点并显示图像或文档。没什么大不了的,你可能会想,只是我在一个隐藏的 IFRAME 中执行此操作,作为我下载页面的一部分,因此该文档甚至从未被看到,而且看起来下载失败了。

以跨浏览器兼容的方式处理此问题的最佳方法是什么? iOS 是否只是忽略此标头?我在任何地方都找不到任何规范或提及。

我是否需要在请求标头中检查 iOS 并以不同的方式提供响应?我希望避免这种情况。谢谢。

附:感谢您在 iOS 网络浏览器中下载文件等任何其他有用的提示。

澄清:这是关于移动 Safari 浏览器浏览的常规网站。不是原生应用。

【问题讨论】:

运气好吗?遇到了类似的问题。 还没有……你、我和至少 5 个其他人仍在等待解决这个问题。 对于它的价值,这是我目前解决这个问题的方式:在桌面上,我在 ipad/ipod 上使用 target=iframeId 技巧将表单/锚提交到隐藏的 iframe(通过 userAgent 嗅探确定) 但是我将目标设置为 _blank 以强制它在新选项卡中打开。 @GeorgeMauer 我想玩这个,但家里没有 iPhone 或 iPad,也不能证明在工作中做这些事情是合理的。您知道我可以在 Windows 或 Linux PC 上免费使用的浏览器是否与 iOS 浏览器具有相同的行为? @MarkAmery browserstack.com? 30 分钟虚拟机时间的演示可能就足够了 - 他们通常对他们算作“使用时间”的时间非常慷慨。 【参考方案1】:

移动版 Safari 浏览器不支持下载文件。

如果 Safari 可以显示它,它将显示。如果您安装了其他可以打开该文件的应用程序,Safari 会为您检测到。

【讨论】:

另见apple.stackexchange.com/questions/25678/… 嘿,我正在拦截 UIwebview 请求并使用 NSUrlsessionDownload 任务下载文件。文件名属于“内容处置”现在我遇到了一些问题,它之前正在工作,但现在有些事情发生了变化并且停止工作你能帮我吗?

以上是关于HTTP“Content-Disposition:附件”并在 iOS 网络浏览器上下载文件的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议header中Content-Disposition中文文件名乱码

content-type和content-disposition

正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)

正确处理下载文件时HTTP头的编码问题(Content-Disposition)

从跨域 http.get 请求的 ASP.NET Web API 2 响应中获取 Angular 中的特定响应标头(例如 Content-Disposition)

关于Azure Storage Blob Content-Disposition 使用学习