Asp.net-Mvc

如何從伺服器下載文件到客戶端?

  • November 9, 2018

我有一個 MVC 項目,我希望使用者能夠通過點擊按鈕下載一個 excel 文件。我有文件的路徑,但我似乎無法通過Google找到我的答案。

我希望能夠使用我的 cshtml 頁面上的一個簡單按鈕來執行此操作:

<button>Button 1</button>

我怎樣才能做到這一點?任何幫助是極大的讚賞!

如果該文件不在您的應用程序文件夾中並且無法從客戶端直接訪問,您可以使用控制器操作將文件內容流式傳輸到客戶端。這可以通過使用以下方法FileResult從控制器操作返回 a 來實現:File

public ActionResult Download()
{
   string file = @"c:\someFolder\foo.xlsx";
   string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
   return File(file, contentType, Path.GetFileName(file));
}

然後用指向此控制器操作的錨點替換您的按鈕:

@Html.ActionLink("Button 1", "Download", "SomeController")

除了使用錨點之外,您還可以使用 html 表單:

@using (Html.BeginForm("Download", "SomeController", FormMethod.Post))
{
   <button type="submit">Button 1</button>
}

如果文件位於應用程序的客戶端文件夾中某些不可訪問的位置,例如App_Data您可以使用該MapPath方法使用相對路徑構造該文件的完整物理路徑:

string file = HostingEnvironment.MapPath("~/App_Data/foo.xlsx");

引用自:https://stackoverflow.com/questions/25711271