问题标签 [content-disposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
14139 浏览

c# - IE 7 错误?- 下载文件时提示保存/打开 - c# asp.net 3.5

我有一个带有链接按钮的 aspx 页面,它触发 javascript 以弹出打开一个新的 aspx 页面以将文件流式传输到浏览器以供用户下载。

在 XP SP3、IE 7 和 FireFox 3.5 上开发和单元测试时,使用以下代码(关键是 Content-Disposition 标签中的“附件”部分),都提示一个对话框询问我是否要保存或打开文档,这正是我想要发生的事情:

当我将它部署到 Windows 2003 服务器并导航到相同的 aspx 页面时,FireFox 3.5 按预期正确要求保存/打开选项,因为这是 FF 中的默认操作。

但是,当我在 IE 7 中导航并单击下载时,我得到一个弹出窗口,该窗口在 1/8 秒内可见......然后消失。没有提示保存/打开。

如果我进入 IE 7 -> 工具 -> Internet 选项 -> 安全 -> 自定义级别 -> 下载

文件下载的自动提示被禁用。当我检查它以启用我然后让保存/打开提示正常工作。

所以我的问题是......有没有人解决这个问题?我已经尝试了很多人们声称可以使用不同的标头标签的东西,例如缓存、编译指示等……这些都没有解决 IE 默认禁用下载属性的事实。

0 投票
6 回答
8339 浏览

ajax - 如何通过 Web 服务返回文件

我正在开发一个 Web 服务,用户可以在其中输入参数并可以选择以各种文件格式(xml、html(在屏幕上)、csv 等)返回数据。

如果服务器生成文件内容(因此没有实际文件),则返回文件的 URL 不是一种选择。那么如何做到这一点呢?我知道有 xml 属性表明元素中的数据是二进制的,但这不会触发浏览器将数据下载为文件。

Content DispositionXML/Web 服务有什么等价物吗?

在一个非常相关的说明上:

javascript/AJAX 可以触发浏览器下载文件吗?我知道仅 js 无法“生成”文件(从某种意义上说,浏览器会将字符串下载为具有给定文件名的文件)但是如果 ajax 函数调用脚本并且脚本回复有标题设置为下载?

我将尝试最后一部分,但想知道那里是否已经有任何可靠的信息。


更多细节:

首先,感谢所有回复的人。所有的答案都非常有帮助和教育意义。

我想我可能会尝试对这种情况进行更多解释,以将所有跨越答案的评论/担忧/建议联系起来。

我管理一个内部员工网站的项目。该项目主要处理进度查看和修改。至少有 4 个不同的 PHP 脚本查询 MySQL DB 以获取基本相同的数据。查询根据上下文略有不同。在一种情况下,它会提取按任务分组的每日时间表,在另一种情况下,它会查询整周的时间表并按人分组。在另一种情况下,它只查询一个人的每周日程安排。在某些情况下,它会输出数据,例如每人或每天或每个职位的小时总数,而在其他情况下,它只提供存储在数据库中的数据。

我开始对项目的某些方面感到内疚。显然,我可以将大量数据提取合并到一个包含的脚本中。我可能应该使用面向对象的 PHP 来处理结果。而且我更专注于解决这个问题,而不是确保数据安全可靠,并且确保数据库上的压力最小化和优化。我什至不确定如何真正知道查询是否已优化。

除了上面提到的内疚之外,我真的开始感到困惑了。在试图整理东西时,我发现自己陷入了一个结中,一个解决方案将一些工作正常的东西搞砸了。

所以,我认为一个好的解决方案是创建一个 Web 服务,它可以简化整个过程并迫使我对如何获取数据有一个逻辑(甚至是一个 API),并且对于任何试图当我最终不是首席开发人员时接管。此外,对于站点后端的升级和转移(有一天它可能在使用 Cold Fusion 的 Windows 服务器上,但我一想到我不寒而栗),以及可能想要连接的其他软件,这将使整个事情更加便携与数据库。

但问题是:

这个项目的整个起源是基于这样一个事实,即我们之前的调度解决方案是上传由我们使用的非常昂贵的企业级调度软件生成的非常丑陋和非语义的 HTML 报告。对于这个可怕的 HTML 报告和生成它的软件,我们遇到的第一个问题是没有.ics可以导入 Outlook 或 Google 日历的“icalendar”文件的选项。我的个人使命是想办法将那些糟糕的报告转换成 ics 文件,从而开始我为什么开始学习 PHP、regex 和 MySQL 的故事。

因此,如果您还没有感到无聊和睡着,我认为 Web 服务是简化和简化调度过程的最佳选择,但如果我最终不得不使用普通的 PHP/MySQL 来获取数据中最有价值的部分(日历文件)然后我倾向于放弃整个事情并继续解开结。

顺便说一句,我确实理解使用 Web 服务的脚本可以创建 ics 文件,并且当用户请求时可以简单地避免使用 AJAX。再次感谢所有让我更清楚这一点的人。我只希望 Web 服务在其末端尽可能处理 DB 返回的所有内容,以便在 HTML/JS/PHP 和数据库之间有一种清晰的分区感。

再次感谢!

0 投票
2 回答
3503 浏览

content-disposition - Content-Disposition 文件名中的分号

我在尝试在 IE8 中下载带有分号的文件名时遇到问题。

假设 attachment.File.FileName = "Test;Test;Test.txt"

FF 3.5:它会提示您保存/打开名为“Test;Test;Test.txt”的文件。这是期望的结果。

IE8:它会提示您保存/打开名为“Test”的文件。

我需要弄清楚如何在 IE8 中获得所需的结果。

0 投票
1 回答
1007 浏览

asp.net - 来自异步 ASP.NET 页面的多个顺序异步 Web 服务调用?

我需要从异步 ASPX 页面进行 n 次异步 Web 服务调用。

每个 WS 调用都会检索二进制文件的一部分。然后代码将文件块输出到页面的响应流。

每个 getFileBlock 都是一个 Web 服务调用,我想使其异步。但是,我需要这些调用以特定顺序发生。

有什么建议如何实施吗?

0 投票
1 回答
1920 浏览

pdf - 浏览器内的pdf报告视图

我使用 BIRT 和 phpjavabridge 创建了这份报告

该报告在 Internet Explorer 8.0 中完美显示,因为它触发了 Adob​​e Acrobat 插件。问题是当我在 Mozilla Firefox 3.5.4 和 Google Chrome 4.0.233 中打开报告时,它向我显示了 pdf 文件的二进制字符串内容,而不是触发 Adob​​e Acrobat 插件。

我通过将 pdf 文件放在 htdoc 文件夹中并从 Firefox 和 Chrome 调用它来检查这一点,它工作得很好。但为什么标题不适用于报告?

*还有为什么标题只适用于 IE 8.0?我需要在所有主要浏览器中查看报告

0 投票
7 回答
6603 浏览

asp.net - 带有 UNC 共享的 Response.TransmitFile() (ASP.NET)

在此页面的评论中:

http://msdn.microsoft.com/en-us/library/12s31dhy%28v=VS.90%29.aspx

..它说 TransmitFile() 不能与 UNC 共享一起使用。据我所知,情况就是这样;当我尝试它时,我在事件日志中收到此错误:

建议的替代方法是使用 WriteFile(),但是,这是有问题的,因为它将文件加载到内存中。在我的应用程序中,文件大于 200MB,因此不会扩展。

ASP.NET 中是否有一种方法可以将文件流式传输给用户:

  • 可扩展(不将整个文件读入 RAM 或占用 ASP.NET 线程)
  • 与 UNC 股票合作

将网络驱动器映射为虚拟目录对我们来说不是一个选项。我也想避免将文件复制到本地 Web 服务器。

谢谢

0 投票
2 回答
74536 浏览

http - 如何在不强制“另存为”对话框的情况下设置响应文件名

我在一些响应中返回一个流,设置适当的content-type标头。我正在寻找的行为是这样的:

  • 如果浏览器能够呈现给定内容类型的内容,那么它应该在浏览器窗口中显示它。

  • 如果浏览器不知道如何呈现内容,那么它应该显示“另存为”对话框,其中文件名应该是响应中提供的文件名。

问题是,如果我将Content-Disposition标题设置为:

"附件;文件名="myfile.txt""

浏览器将始终显示“另存为”对话框。

如果我不设置Content-Disposition,则“另存为”对话框中使用的文件名是 URL 中在我的情况下不起作用的文件名。

我也试过设置Content-Dispositioninline但结果是一样的。

0 投票
2 回答
197 浏览

jquery - 已发布表单上的就绪事件

我在 iframe 中有一个表单,当发布此表单时,会向用户返回一个文件(基于表单信息)。该文件使用 content-disposition:attachment 返回,因此只显示文件保存对话框。一旦文件返回给用户,我想在 javascript 中做一些事情。我尝试附加一个 $(iframe).ready(); 表单发布后到 iframe,但它会立即消失。

值得注意的是:$(iframe).load(); 也不起作用,它永远不会被触发。表单帖子在技术上是 iframe 的第二次加载(第一次加载在 iframe 中显示表单)。

有任何想法吗?

0 投票
4 回答
18676 浏览

php - PHP - 如何在 Content-Disposition 中设置完整目录路径?

我正在将文件名传递给下载页面。
即 somefile.xls

下载页面将完整目录路径添加回文件名。
即 c:\temp\somefile.xls

问题是现在设置标题的“Content-Disposition”不起作用。它要下载的文件名是完整的目录文件名路径。 即 c_temp_somefile

Content-Disposition 可以处理完整路径吗?

如果可以,我如何让我的脚本正确下载文件?

代码是:

更新代码(来自答案):

0 投票
2 回答
888 浏览

asp.net - 使用 ASP.NET 下载图片/Word 文档

如果我输入以下代码:

进入Page_Load,我会得到下载图片的对话框。但是当我将相同的代码放入子例程时:

我得到了 MsgBox(仅用于测试),但我无法下载图像。有任何想法吗?