我有一个mvc 5应用程序,我将字母文件保存在(〜\ Files \ Letters)等文件夹内的文件夹中,并将物理路径保存在数据库中,将字母文件上传到(〜\ Files \ Letters)可以正常工作并保存物理路径工作正常,问题是将信函文件下载到客户端计算机,我尝试使用Webclient和Response都行不通并且没有给出任何错误,这是使用Response下载信函文件的代码。 / p>
[HttpPost]
public void open(int id)
{
string path = "";
path = db.tblLetters.Where(t => t.ID == id).SingleOrDefault().LetterImg;
string fileName = path.Substring(path.LastIndexOf(@"\")+1);
string p = Server.MapPath("~/Files/LettersImgs/" + fileName);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.ContentType = "application/octet-stream";
Response.TransmitFile(p);
Response.End();
}
答案 0 :(得分:0)
您可以使用FilePathResult
直接从服务器的文件路径返回文件,而不必使用旧式的Response.TransmitFile
。将返回类型从void
更改为ActionResult
(或FileResult
),并使用[HttpGet]
代替[HttpPost]
,然后执行return File(...)
让用户下载像下面的示例一样的文件:
[HttpGet]
public ActionResult Open(int id)
{
string path = "";
path = db.tblLetters.Where(t => t.ID == id).SingleOrDefault().LetterImg;
string fileName = path.Substring(path.LastIndexOf(@"\")+1);
string p = Server.MapPath("~/Files/LettersImgs/" + fileName);
return File(p, "application/octet-stream", fileName);
}