如何强制具有自定义扩展名的文本文件在 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 中显示为文本的主要内容,如果未能解决你的问题,请参考以下文章

使用具有自定义扩展名的 SDF 文件(SQLCE 数据库)作为我的 WPF 应用程序的数据文件类型

如何在文档目录中创建具有自定义扩展名的文件?

如何使用具有自定义文件扩展名的 H2 数据库?

Richfilemanager 列出具有自定义扩展名的文件

如何将具有不同扩展名的文件作为BAT文件运行[重复]

如何强制 Spark/Hive 创建具有自定义权限的 task_* 目录