如何强制具有自定义扩展名的文本文件在 myApp 中打开,而不是在 Safari 中显示为文本
Posted
技术标签:
【中文标题】如何强制具有自定义扩展名的文本文件在 myApp 中打开,而不是在 Safari 中显示为文本【英文标题】:how to force a text file with a custom extension to open in myApp rather than being displayed as text in Safari 【发布时间】:2013-02-12 18:09:28 【问题描述】:我想听听您对以下场景的可行解决方案的想法/建议:
有一个外部网络服务可以为 iPad 用户提供我选择/设计的自定义格式文件,以便通过用户 iPad 上的 Safari 浏览器下载。
浏览器不会打开这个文件,而是调用 myApp 来读取它并使用它的内容(uuid 代码用它的值启动它的内部进程)
我已经对此进行了研究,现在我知道如何注册“myApp”来处理 ios 级别的自定义文件扩展名。只要文件不是文本文件就可以正常工作(即,如果它是真正的二进制文件,我会得到“在 myapp 中打开”提示)
一旦文件被 Safari 识别为文本文件,它的内容就会显示在页面上,并且用户没有机会像使用具有相同扩展名的二进制文件那样“在 myApp 中打开” .
感谢任何想法/建议,让我走上正轨。谢谢。
【问题讨论】:
如果您创建自定义文件格式并为其注册应用程序,Safari 将自动向用户显示类似于在 Safari 中打开 PDF 的选项,并提供在 iBooks 或其他已安装的应用程序中打开它. 我已经尝试过了,浏览器会在检测到它是基于文本的文件时立即打开该文件。不管它的扩展。也许这个选项出现在浏览器显示自定义(但基于文本)文件的内容之后? 该选项可能会在类似于处理 PDF 之后显示。但无论如何,您可能会查看自定义 HTTP 标头来告诉 Safari 它不是文本文件。 我已经修改了我的问题以反映当前的发展。只要文件是二进制文件,我就会得到“在 myApp 中打开”提示,但是当文件是文本文件时,浏览器将显示其内容,并且似乎没有办法在“myApp”中打开.看起来自定义 HTTP 标头在 iOS 上也被忽略了(至少是关于 Content-Disposition 的) 你的文件有什么原因不能是不透明的二进制格式吗? 【参考方案1】:这在 /etc/apache2/httpd.conf 中对我有用
<IfModule headers_module>
<FilesMatch ".custom$">
Header Set Content-type application/myApp
Header Set Pragma public
Header Set Expires 0
Header Set Cache-Control private
</FilesMatch>
</IfModule>
关键在于设置 Content-type,因为 Content-Disposition 在 iOS 上的 Safari 中会被忽略。归功于亚伦。 (对不起,我忘记了你的全名,因为另一个答案和你的评论一起被删除了)。 如果您添加答案,我将切换到它。谢谢。
【讨论】:
以上是关于如何强制具有自定义扩展名的文本文件在 myApp 中打开,而不是在 Safari 中显示为文本的主要内容,如果未能解决你的问题,请参考以下文章