首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.TransmitFile在mvc 5中不起作用。

Response.TransmitFile在mvc 5中不起作用。
EN

Stack Overflow用户
提问于 2018-09-28 12:38:38
回答 1查看 1.1K关注 0票数 1

我有一个mvc 5应用程序,我保存信件文件在文件夹内的文件夹(~\ files \ letters )和我保存的物理路径在数据库中,上传信件文件到(~\ files \ letters )很好,保存物理路径很好,问题是下载一个信件文件到客户端机器,我已经尝试使用Webclient和响应都不工作,不给任何错误,这里是下载信件文件使用响应的代码。

代码语言:javascript
复制
 [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();

    }
EN

回答 1

Stack Overflow用户

发布于 2018-09-28 12:59:46

您可以使用FilePathResult直接从服务器的文件路径返回文件,而不是使用老式的Response.TransmitFile。将返回类型从void改为ActionResult (或FileResult),使用[HttpGet]代替[HttpPost],并执行return File(...)让用户下载文件,如下所示:

代码语言:javascript
复制
[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);
}

相关问题:How to download a file to client from server?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52548395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档