Response.TransmitFile не работает в MVC 5 - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложение mvc 5, я сохраняю файлы писем в папке внутри папки, например (~ \ Files \ Letters), и сохраняю физический путь в базе данных, загружая файлы писем в (~ \ Files \ Letters), работает нормально и сохраняюфизический путь работает нормально, проблема заключается в загрузке файла письма на клиентский компьютер, я пытался использовать Webclient и Response, оба не работают и не выдают никаких ошибок, вот код для загрузки файла письма с использованием Response.

 [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();

    }

1 Ответ

0 голосов
/ 28 сентября 2018

Вместо использования старого стиля Response.TransmitFile, вы можете использовать FilePathResult для возврата файла непосредственно из пути к файлу сервера.Измените тип возвращаемого значения с 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);
}

Проблема, связанная с данной: Как загрузить файл на клиент с сервера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...