ASP.. NET MVC 4, c#:如何下载文件
本文关键字:何下载 下载 文件 MVC NET ASP | 更新日期: 2023-09-27 18:16:37
我之前已经上传了一个文件到我的数据库,现在我想从我的数据库下载这个文件。
谁能告诉我怎么做?我是c#和ASP的新手。净MVC。
控制器:
public ActionResult Details(string id = null)
{
Assignment assignment = db.Assignments.Find(id);
if (assignment == null)
{
return HttpNotFound();
}
return View(assignment);
}
模型:
public string AssignmentID { get; set; }
public Nullable<System.DateTime> SubmissionDate { get; set; }
public string Status { get; set; }
[Range(0,100, ErrorMessage="Only Value between 0-100 is accepted.")]
public Nullable<decimal> Mark { get; set; }
public string Comments { get; set; }
public byte[] FileLocation { get; set; }
视图:
<div class="display-label">
<%: Html.DisplayNameFor(model => model.FileLocation) %>
</div>
<div class="display-field">
<%: Html.DisplayFor(model => model.FileLocation) %>
</div>
由于您有一个Stream
或byte[]
或文件的路径,您可以使用来自Controller
基类的File()
方法,并将该文件响应为ActionResult
,例如:
public ActionResult Details(string id = null)
{
Assignment assignment = db.Assignments.Find(id);
if (assignment == null)
{
return HttpNotFound();
}
return File(assigment.FileLocation, "content/type", "fileName.extension");
}
请记住获得正确的content-type
并添加具有正确扩展名的fileName
。
根据您从数据库中检索文件的方式,您可以使用ASP。. NET MVC的File()
助手方法,将您的文件返回给客户端。
这篇博文很好地描述了如何使用File()
帮助器以及最终返回的内容。
您必须使用@url.action
来显示视图中的图像:
视图:
<%: Url.Action("ImageDetails","// your controller name//", new{ id = item.ID }) %>
和在你的行动:
public ActionResult ImageDetails(string id = null)
{
Assignment assignment = db.Assignments.Find(id);
return File(assignment.FileLocation, "content/type", "file.extension");
}
请记住获得正确的content-type
并添加正确的extension
文件,否则文件将无法在视图中正确渲染。
如果你只想下载文件而不显示,那么:-
public ActionResult Details(string id = null)
{
Assignment assignment = db.Assignments.Find(id);
return File(assignment.FileLocation, "content/type", "file.extension");
}