Nếu tệp không nằm trong thư mục ứng dụng của bạn và không thể truy cập trực tiếp từ ứng dụng khách, bạn có thể có hành động điều khiển sẽ truyền trực tuyến nội dung tệp tới ứng dụng khách. Điều này có thể đạt được bằng cách quay một FileResult
từ hành động điều khiển của bạn bằng cách sử dụng File
phương pháp:
public ActionResult Download()
{
string file = @"c:\someFolder\foo.xlsx";
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
return File(file, controntType, Path.GetFileName(file));
}
và sau đó thay thế nút của bạn với một neo trỏ đến controller action này:
@Html.ActionLink("Button 1", "Download", "SomeController")
Ngoài ra việc sử dụng một neo bạn cũng có thể sử dụng biểu mẫu html:
@using (Html.BeginForm("Download", "SomeController", FormMethod.Post))
{
<button type="submit">Button 1</button>
}
Nếu tệp nằm bên trong một số không thể truy cập từ thư mục khách của ứng dụng của bạn như App_Data
bạn có thể sử dụng phương pháp MapPath
để xây dựng con đường vật lý đầy đủ để tập tin này bằng một đường dẫn tương đối:
string file = HostingEnvironment.MapPath("~/App_Data/foo.xlsx");
Nguồn
2014-09-07 14:39:25
gì nếu tập tin trong máy chủ khác nhau? giả sử tên máy chủ là "VUP-1"? và giả sử đường dẫn là "c: \ someFolder \ foo.xlsx" -> trong máy chủ VUP-1 –