为啥 <iframe> 中的 .txt 文件被下载而不是显示?

Posted

技术标签:

【中文标题】为啥 <iframe> 中的 .txt 文件被下载而不是显示?【英文标题】:Why .txt file in <iframe> is getting downloaded instead of displayed?为什么 <iframe> 中的 .txt 文件被下载而不是显示? 【发布时间】:2015-08-31 21:01:10 【问题描述】:

我正在使用&lt;iframe&gt; 来显示一个文本文件:

<div class="document-view">
    <img src="img/302.GIF" />
</div> 

$(window).load(function () 
    <s:if test="extention.equalsIgnoreCase('txt')">
      element = '<iframe class="iframe" src="/dmsrepo/<s:property value="docLocation"/>" />';
    </s:if>

    $('.document-view').html(element);
);

当我在浏览器中检查元素时,我可以看到文件位置。

<iframe class="iframe" src="/dmsrepo/Legal Doc Type/LegalDocType_123456789_1.0.txt" />

但文本文件正在 Chrome、Firefox 和 IE 中下载。

如何解决这个问题?


编辑:您可以在第一个页面加载之后重现以下小提琴中的行为,奇怪的是只影响 Firefox。

只需open the page,然后按运行

注意:如果 Firebug Net 模块被激活,它也会影响第一次加载。

【问题讨论】:

@AndreaLigios Nope..仍在下载文件.. @AndreaLigios 你是对的..当我在 Firefox 中刷新页面时下载它。但在 IE 或 chrome 中没有问题。 【参考方案1】:

显示文件在 .htaccess 中添加以下行

AddType text/plain .txt
AddType text/plain .log

这是 Firefox 的信号,您不必下载文件而是以纯文本形式查看文件。此技术可以应用于您需要查看而不是下载的所有文件。

【讨论】:

【参考方案2】:

这是文件的问题。它没有格式化为 html。因为它在文件读取的末尾有一些特殊的 unicode (eg) 字符。如果文本响应具有这样的特殊字符。它无法将响应解析为嵌入在 iframe 中的 html。

你可以看看这个例子:

&lt;iframe src='http://humanstxt.org/humans.txt' /&gt; &lt;/iframe&gt; 

【讨论】:

【参考方案3】:

因为浏览器只能理解 html。将文件扩展名更改为 .html 或者使用像php这样的服务器端语言并使用file_get_contents()函数,你可以向浏览器显示文本文件。

【讨论】:

那为什么它可以在 Chrome、IE 等上运行呢?也是第一次在 Firefox 上? 好吧,+1 因为最后一个链接。 @prince 尝试将 .txt 文件重命名为 .html 并查看它是否也适用于 Firefox 我尝试更改扩展名,但 html 视图不包含任何换行符。因此它不会保持文本文件的结构。所以我认为我应该将其作为 html 文件使用 br> 在业务逻辑中。

以上是关于为啥 <iframe> 中的 .txt 文件被下载而不是显示?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 <iframe> 元素在 HTML 4.01 中无效?

为啥 iframe 这么慢?

在网页中读取 TXT 文件 iframe 时如何阻止浏览器对 <、> 和 & 进行编码?

为啥将 <script> 附加到动态创建的 <iframe> 似乎会在父页面中运行脚本?

为啥页面加载多个iframe和div运行速度超慢?

为啥我的 jquery 不采用这个 iframe 的类?