gpt4 book ai didi

asp.net-mvc - 文件下载 asp.net mvc

转载 作者:行者123 更新时间:2023-12-01 08:35:40 27 4
gpt4 key购买 nike

我正在按照教程从服务器下载文件。但是遇到了一些麻烦。我一定是犯了一些愚蠢的错误..!!

这是我关注的链接:http://haacked.com/archive/2008/05/10/writing-a-custom-file-download-action-result-for-asp.net-mvc.aspx

要求是;用户将单击一个链接,该站点会将他们带到详细信息页面。在该详细信息页面上,将有一个下载链接。当用户点击该下载链接时,文件将被下载。

问题是,当我点击下载链接时,它没有下载原始文件。而是下载一个 HTML 文件。如果我单击 HTML 文件,它会显示垃圾。

这是我的代码:

行动:

public ActionResult Download(string path,string name)
{
return new DownloadResult { VirtualPath = path, FileDownloadName = name };
}

DownloadResult 类

public class DownloadResult : ActionResult
{

public DownloadResult()
{
}

public DownloadResult(string virtualPath)
{
this.VirtualPath = virtualPath;
}

public string VirtualPath
{
get;
set;
}

public string FileDownloadName
{
get;
set;
}

public override void ExecuteResult(ControllerContext context)
{
if (!String.IsNullOrEmpty(FileDownloadName))
{
context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + this.FileDownloadName);
}

string filePath = this.VirtualPath; //context.HttpContext.Server.MapPath(this.VirtualPath);
context.HttpContext.Response.TransmitFile(filePath);
}
}

与教程和我的代码的唯一区别是我使用的是实际的服务器路径。

有什么想法吗??

最佳答案

如果您需要向客户端发送文件并且您知道路径,请使用 FilePathResult :

public ActionResult Download(string path, string name)
{
return new FilePathResult(path, contentType) {
FileDownloadName = name
}
}

请注意,您需要知道内容类型。如果你真的不知道,你可以使用 application/octet-stream 让浏览器将其视为二进制。

关于asp.net-mvc - 文件下载 asp.net mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com