我尝试使用下面的代码。但这没有用。
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(使用前将#替换为@)