使用 Response.TransmitFile 来处理物理文件不起作用

2024-04-23

我正在尝试使用 Response.TransmitFile() 来提示下载。 我读过很多关于这个问题的帖子,并根据 Rick Strahl 的博客制定了我的方法http://www.west-wind.com/weblog/posts/76293.aspx http://www.west-wind.com/weblog/posts/76293.aspx

唯一的区别(据我所知)是我的目标是虚拟目录之外的物理文件。 这段代码在ajaxified radgrid中调用...我想知道response.transmitfile是否不适用于ajax调用? 这是我的代码片段:

            // Get the physical Path of the file
            string docFilePath = (string)args.AttachmentKeyValues["DocFilePath"];

            // Create New instance of FileInfo class to get the properties of the file being downloaded
            FileInfo file = new FileInfo(docFilePath);

            // Checking if file exists
            if (file.Exists)
            {
                Response.ClearContent();

                Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);


                Response.AddHeader("Content-Length", file.Length.ToString());


                Response.ContentType = ReturnExtension(file.Extension.ToLower());


                Response.TransmitFile(file.FullName);

                Response.End();
            }

查看系统知道该文件存在...它会毫无错误地到达 Response.End()...然后正确继续应用程序...除了没有下载提示。

ReturnExtension 方法是从另一个站点提取的(抱歉我不记得在哪里了!)如下

    string ReturnExtension(string fileExtension)
    {
        // In the long run this should go in a class
        switch (fileExtension)
        {
            case ".htm":
            case ".html":
            case ".log":
                return "text/HTML";
            case ".txt":
                return "text/plain";
            case ".doc":
                return "application/ms-word";
            case ".tiff":
            case ".tif":
                return "image/tiff";
            case ".asf":
                return "video/x-ms-asf";
            case ".avi":
                return "video/avi";
            case ".zip":
                return "application/zip";
            case ".xls":
            case ".csv":
                return "application/vnd.ms-excel";
            case ".gif":
                return "image/gif";
            case ".jpg":
            case "jpeg":
                return "image/jpeg";
            case ".bmp":
                return "image/bmp";
            case ".wav":
                return "audio/wav";
            case ".mp3":
                return "audio/mpeg3";
            case ".mpg":
            case "mpeg":
                return "video/mpeg";
            case ".rtf":
                return "application/rtf";
            case ".asp":
                return "text/asp";
            case ".pdf":
                return "application/pdf";
            case ".fdf":
                return "application/vnd.fdf";
            case ".ppt":
                return "application/mspowerpoint";
            case ".dwg":
                return "image/vnd.dwg";
            case ".msg":
                return "application/msoutlook";
            case ".xml":
            case ".sdxl":
                return "application/xml";
            case ".xdp":
                return "application/vnd.adobe.xdp+xml";
            default:
                return "application/octet-stream";
        }
    }

这个问题是我无法通过 AJAX 调用进行 Response.TransmitFile() 。 阅读了一些博客后,我使用异步回发来设置不可见 iframe 的 src。 然后 iframe 在其加载事件中发送该文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Response.TransmitFile 来处理物理文件不起作用 的相关文章

随机推荐

  • Gridview 为空白时显示页眉/页脚 VB.net

    我意识到有一个解决方案 但我正在努力让它正确转换为 VB 我成功地获得了一组级联的下拉菜单 其中包含基于彼此结果的数据 我对此非常满意 然而 由于回发 网格将消失 直到选择第二个值并且看起来很糟糕 如果网格视图中没有数据 VB 中是否允许标
  • 在Python中用pandas对系列进行排序[重复]

    这个问题在这里已经有答案了 我从 DataFrame 中选择了一列 然后得到了一个系列 如何对系列进行排序 我使用了 Series sort 但它不起作用 df pd DataFrame A 5 0 3 8 B B8 B9 B10 B11
  • python:根据操作系统使用不同的函数

    我想编写一个可以在 Linux 和 Solaris 上执行的脚本 大多数逻辑在两种操作系统上都是相同的 因此我只编写一个脚本 但由于某些部署的结构会有所不同 文件位置 文件格式 命令语法 因此两个平台上的一些功能会有所不同 这可以像这样处理
  • 使用 dplyr 计算行之间的差异时间

    我正在尝试使用 dplyr 包计算两个相邻行中两个时间戳之间的时间差 这是代码 tidy ex lt function library dplyr construct example data data lt data frame code
  • 使用 ccnet 制作自定义报告

    所以我有我使用合并任务放入 ccnet 的输出 现在我需要做的是提出我自己的自定义 xsl 并输出数据 关于如何执行此操作的教程有什么想法吗 例如我需要使用什么插件 我可以创建自己的吗 动作名称有什么作用
  • 如何使ListView的宽度适合其单元格的宽度

    我有一个带有自定义单元工厂的 ListView 我计算单元格的最大值 minWidth 并将其设置为整个 ListView 的 minWidth 因此 受布局中其他区域约束的 ListView 会精确地缩小到 minWidth 但它所容纳的
  • 如何解决 docker 中的 python 应用程序中的 pywin32 依赖项?

    我有一个 python 3 6 应用程序 必须构建和导入 c 库 并通过 Windows 服务部署多个 celery 工作人员 该应用程序部署在 Windows 虚拟机上的 azure 上 但我必须弄清楚如何创建一个独立于平台的 docke
  • 多态关联外键约束。这是一个好的解决方案吗?

    我们在应用程序中使用多态关联 我们遇到了经典问题 我们遇到了无效的外键引用 并且无法创建外键约束 因为它是多态关联 也就是说 我对此做了很多研究 我知道使用多态关联的缺点和优点 但我发现了一个似乎不错的解决方案 http blog meta
  • 使用 CSS 实现水平列表滚动

    我想创建一个类似于 Netflix 上看到的列表的水平滚动条 这是 html 的基本设置 This is an image that I will use to explain my efforts 上面的设置是我想要的 scrolling
  • 有没有一种快速方法可以在Python中获得相当于R的ls()?

    我是 Python 新手 通常使用 R 并且经常使用ls 要获取当前环境中所有对象的向量 Python 中是否有可以快速执行相同操作的方法 您可能正在寻找dir http docs python org 3 library function
  • C++ deque vs 队列 vs 堆栈

    队列和堆栈是被广泛提及的结构 但是 在 C 中 对于队列 您可以通过两种方式实现 include
  • 如何在 JSF 1.x 中包含相对于上下文路径的 CSS?

    如何在 JSF 1 1 中包含相对于上下文路径的 CSS 样式表 就像我们使用的JSF2 https stackoverflow com questions 8367421 how to reference css js image res
  • Javadoc 插入 UML 图

    有没有办法将图像嵌入到我的 JavaDoc 中 基本上我想在一些文档中包含一些 UML 图来解释我的类的层次结构 Thanks 查看本节 http www oracle com technetwork java javase documen
  • 如何使用纯css选择器选择隐藏元素

    td class col style display none AAA span class clear icon span td 我想使用纯CSS来隐藏文本 AAA 以显示span btn 有没有办法用纯CSS来做到这一点 如果您的设计并
  • RESTful 应用程序中的 XSRF

    我是一名 ASP NET 开发人员 正在尝试学习 Rails 和 RESTful 方法 为了理解这一点 我计划编写一个电子邮件客户端 它会对服务器进行 RESTful GET 调用以获取电子邮件 并通过 POST 调用来发送电子邮件 要遵循
  • “IF”语句中的 Java 布尔值不起作用 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 不幸的是
  • 在 Fragment 中保留对 View 的引用会导致内存泄漏吗?

    有人告诉我以下内容 但我有点困惑 请问您能证实还是有异议吗 片段不通过保留setRetainInstance 目前 在 Fragment 中初始化视图是一种常见的做法 如下所示 private lateinit var myTextView
  • 如何在 WinSCP C# 中使用 Session.GetFiles 下载单个文件

    因此 基本上我试图从服务器上的整个文件夹中仅下载一个文件 文件夹 domain 现在包含这些文件 文件1 txt文件2 txt文件3 txt 因此 正如我在 WinSCP 文档中看到的 如果我只想下载一个文件 我仍然应该使用Session
  • MSBUILD:错误 MSB1011:指定要使用的项目或解决方案文件,因为此文件夹包含多个项目或解决方案文件

    我是 Docker 新手 正在尝试为 ASP NET Core 应用程序创建 Dockerfile 有人可以建议我需要进行哪些更改吗 这是我的 Dockerfile FROM microsoft dotnet 2 1 sdk WORKDIR
  • 使用 Response.TransmitFile 来处理物理文件不起作用

    我正在尝试使用 Response TransmitFile 来提示下载 我读过很多关于这个问题的帖子 并根据 Rick Strahl 的博客制定了我的方法http www west wind com weblog posts 76293 a