使用asp.net mvc下载文件

2023-11-29

我尝试使用下面的代码。但这没有用。

public FileResult download(string path)
{
   return File(path, "application/pdf", Server.UrlEncode(path));
}

我的 Ajax 代码是:

function fileDownload(path) { 
    $.ajax({ 
       url: '/Home/download', 
       data: { path: path }, 
       type: 'POST', 
       async: false, 
       success: function (data) { } 
    }); 
}

您通常希望将文件名映射到服务器上的物理路径,例如假设用户选择文件Foo.pdf所有内容文件都在~/Content folder:

public FileResult download(string path)
{ 
    string actualPath = Server.MapPath("~/Content/" + path);
    return File(actualPath, "application/pdf", Server.UrlEncode(path)); 
}

但是,从安全角度来看,允许用户直接指定文件名是值得怀疑的 - 您可能需要考虑其他替代方案,例如可用文件的表或字典,并强制浏览器通过以下方式选择可用文件之一key - 这样恶意用户就无法通过网络钓鱼获取不打算提供服务的文件。

编辑,看到OP想要Ajax后

Ajax 文档应该可以工作,尽管以这种方式下载不会呈现 PDF - 您需要将文档传递给可编写脚本的 PDF 查看器或类似的查看器。

您可以生成一个简单的链接、按钮或图像,而不是使用 ajax 文档,用户可以单击它们来调用控制器操作并下载 PDF:

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

使用asp.net mvc下载文件 的相关文章

随机推荐

  • 如何触发mapView:didSelectAnnotationView

    我是 iPhone 开发新手 我一直在阅读有关如何使谷歌地图注释标注窗口接受换行符的几个问题 我读过的每个教程都要求我启动mapView didSelectAnnotationView方法 但我不知道如何触发这个 我尝试过的事情包括 将方法
  • JUNG:按顺序放置树节点

    将节点添加到我的DelegateTree 它们在视觉上并不按照我添加它们的顺序出现 我一直在寻找解决方案 但还没有找到任何东西 有谁知道如何改变这个吗 提前致谢 EDIT 我的代码 Generate a visualization of t
  • 如何使文字环绕图像?

    我正在设计一个博客 我正在使用 CarrierWave 和 MiniMagic 进行图像文件上传 截至目前 每篇文章的顶部都会显示一张图片 我首先尝试将图片大小调整为矩形 但似乎即使我在调整大小下更改尺寸 图片也始终显示为正方形 现在 我正
  • 使用 EclipseLink 和 Hibernate (JPA2.1) 生成架构 - @ForeignKey 被忽略

    我正在测试 JPA2 1 和新的 模式生成 功能 为此 我在 HyperSQL 数据库下测试了两种实现 EclipseLink 2 5 2 M1 是参考实现 休眠4 3 我对实现没有任何偏好 甚至对性能也没有偏好 我测试了 EclipseL
  • Tomcat 7 更新后继续使用旧的 jsp

    我们 我公司的人员 不久前为 Tomcat 创建了一个应用程序 它使用 servlet 和 jsp 作为 GUI 我们刚刚完成了一次更新 其中一个 jsp 发生了很大的变化 但是 当我们在一台计算机上替换 war 文件时 它会继续使用旧的
  • 在 Magento 1.6.2 中登录/注销时如何从 top.links 中删除链接

    我进行了很好的搜索并找到了customer logged in and customer logged out标签 但我无法让它们正常工作 我确信这是我对它们的误解 我的目标是隐藏区块中的登录 帐户和结账链接top links当用户处于no
  • R(https) 中 getSymbols 函数使用错误 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 Running library quantmod getSymbols BSESN src yahoo 产生以下错误消息 Error in download file pas
  • 通过cmd上传和更新谷歌驱动器中的文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何脚本可以让 Google Drive 每天自动上传 转换和更新 csv 文件 我按照 Google 站点上的 JDBC 上的脚本进行操作
  • 为什么 Stream Parallel() 不使用所有可用线程?

    我尝试跑100Sleep使用 Java8 1 8 0 172 Stream parallel 并行任务在自定义 ForkJoinPool 内提交 有 100 多个可用线程 每个任务都会sleep1秒 鉴于 100 个睡眠可以并行完成 我预计
  • HTML 选择。 Select2 + ng-click = 不起作用?

    我在用AngularJS and Select2创建一个漂亮的下拉菜单 我已经包括了ng click在 选择标签的 选项标签中 但是 ng click 在处于Select2
  • 了解 Dart 1.11 的新appendHTML清理

    我刚刚升级到 Dart 1 11 我不太明白发生了什么 appendHTML 我有一个非常大的项目 使用 dart 和 appendHTML 经常使用 我已经在这个应用程序上工作了一年多了 但现在没有任何效果了 我的控制台看起来像这样 Re
  • BUG:IIS7 托管请求

    我不知道是否也应该将这个问题发布到 ServerFault 因为它是关于 IIS 配置的 在 IIS7 中 我们可以通过以下方式告诉模块运行托管内容 从而加快静态内容服务
  • 在 Microsoft Access 2010 表单和报告中显示多个附件

    最初 我很高兴在 Access 2010 中发现附件字段 这个功能在美学上让我内心的数据库纯粹主义者感到厌烦 但我内心的懒惰在这里负责 从表面上看 它确实看起来可以使一个我当前的项目更容易 更简单 令人高兴的是 它会在表单和报告上自动显示图
  • Objective-C:如何找到数组中最常见的字符串?

    我有一个来自在线数据库的字符串数组 我试图确定最常用的单词 数组内的值会有所不同 但我想检查我正在使用的任何集合或单词中最常见的单词 如果理论上我有以下数组 NSArray stringArray NSArray arrayWithObje
  • 防止执行“继承的”信号处理程序

    当许多派生组件频繁使用该功能时 在 基本 组件中定义信号处理程序非常漂亮 但是 在 QML 中 在派生组件中安装新的处理程序does not替换原来的处理程序 它只是堆叠在它的上面 由于处理程序对于每个信号来说并不是唯一的 它们只是连接 并
  • SQLCLR 程序集部署失败,因为程序集验证失败

    万一其他人遇到这个问题 错误 SQL72014 Net SqlClient 数据提供程序 创建程序集 程序集 Assembly Name 失败 因为程序集 Assembly Name 验证失败 检查引用的程序集是否是最新的 并受信任 对于
  • 设置会话文化

    我的应用程序的每个用户都会选择他们的国家 地区 然后将其存储在 cookie 中并存储以供以后请求 一切正常 但我需要在会话开始时设置文化 我目前正在尝试将 web config 中的区域性设置为 en GB 然后使用 Global asa
  • 如何指定整个路由器的依赖关系?

    class User BaseModel name str token str fake db User name foo token a1 User name bar token a2 async def get user by toke
  • 附加到 NSTextView

    我有一个NSTask 与NSPipe设置 在后台运行 我想在内容进入时输出它们NSTextView output 我正在使用的代码是 NSMutableAttributedString str NSMutableAttributedStri
  • 使用asp.net mvc下载文件

    我尝试使用下面的代码 但这没有用 public FileResult download string path return File path application pdf Server UrlEncode path 我的 Ajax 代