簡體   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