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>

ASP.. NET MVC 4, c#:如何下载文件

由于您有一个Streambyte[]或文件的路径,您可以使用来自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");
}