Asp.net-Mvc
如何從伺服器下載文件到客戶端?
我有一個 MVC 項目,我希望使用者能夠通過點擊按鈕下載一個 excel 文件。我有文件的路徑,但我似乎無法通過Google找到我的答案。
我希望能夠使用我的 cshtml 頁面上的一個簡單按鈕來執行此操作:
<button>Button 1</button>我怎樣才能做到這一點?任何幫助是極大的讚賞!
如果該文件不在您的應用程序文件夾中並且無法從客戶端直接訪問,您可以使用控制器操作將文件內容流式傳輸到客戶端。這可以通過使用以下方法
FileResult從控制器操作返回 a 來實現:Filepublic 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");