繁体   English   中英

从ASP.net MVC中的服务器下载文件(找不到错误404)

[英]Downloading file from server in ASP.net MVC (Error 404 not found)

我有一个简单的操作,该操作应允许我下载要求的文件。

如果我使用浏览器的上下文菜单调用该操作,则效果很好(请参见下面的屏幕截图),但是当我直接单击链接时,出现以下错误: HTTP错误404.0-找不到-您正在寻找的资源已被删除,更名,或暂时不可用。

使用浏览器的上下文菜单:

在此处输入图片说明

用于下载文件的控制器操作:

public ActionResult Download(string id)
{
    string username = User.Identity.Name;
    Client client = db.Client.SingleOrDefault(x => x.Email == username);

    string filePath = Server.MapPath("~/Client-Documents/" + client.FolderName + "/" + id);

    return File(filePath, "text/plain", id);
}

查看正在生成文件链接的代码段:

@for (int i = 0; i < Model.Count(); i++)
{
    <tr>
        <td>@(i + 1)</td>
        <td>@Model[i].Name</td>
        <td>
            <a href="@Url.Action("Download", "Client", new { @area = "Administration", id = Model[i].Location })">Download</a>
        </td>
    </tr>
}

您正在传递包含扩展名的文件名,因此ASP.NET将忽略它并将其视为静态文件,从而产生404。为避免这种情况,请不要传递扩展名。 可能最好按ID引用文件。

还要注意,如果文件是数据的一部分,则最好将它们存储在数据库中。 这避免了许多文件系统陷阱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM