ASP .NET MVC - есть метод контроллера, который возвращает изображение в ответе? - PullRequest
16 голосов
/ 13 февраля 2012

Как создать метод контроллера с именем GetMyImage(), который возвращает изображение в качестве ответа (то есть содержимого самого изображения)?

Я думал об изменении типа возвращаемого значения с ActionResult на string, но, похоже, это работает не так, как ожидалось.

Ответы [ 5 ]

20 голосов
/ 13 февраля 2012

Возврат FilePathResult с использованием Файл метод контроллера

public ActionResult GetMyImage(string ImageID)
{
    // Construct absolute image path
    var imagePath = "whatever";

    return base.File(imagePath, "image/jpg");
}

Существует несколько перегрузок метода File .Используйте то, что наиболее подходит для вашей ситуации.Например, если вы хотите отправить заголовок Content-Disposition так, чтобы пользователь получил диалог SaveAs вместо просмотра изображения в браузере, вы должны передать третий параметр string fileDownloadName.

4 голосов
/ 13 февраля 2012

Вы можете использовать FileContentResult так:

byte[] imageData = GetImage(...); // or whatever
return File(imageData, "image/jpeg");
4 голосов
/ 13 февраля 2012

Проверьте класс FileResult . Пример использования см. здесь .

2 голосов
/ 13 февраля 2012
using System.Drawing;
using System.Drawing.Imaging;     
using System.IO;

public ActionResult Thumbnail()
{
    string imageFile = System.Web.HttpContext.Current.Server.MapPath("~/Content/tempimg/sti1.jpg");
    var srcImage = Image.FromFile(imageFile);
    var stream = new MemoryStream();
    srcImage.Save(stream , ImageFormat.Png);
    return File(stream.ToArray(), "image/png");
}
1 голос
/ 13 февраля 2012

Просто попробуйте один из них в зависимости от вашей ситуации (скопировано с здесь ):

public ActionResult Image(string id)
{
    var dir = Server.MapPath("/Images");
    var path = Path.Combine(dir, id + ".jpg");
    return base.File(path, "image/jpeg");
}


[HttpGet]
public FileResult Show(int customerId, string imageName)
{
    var path = string.Concat(ConfigData.ImagesDirectory, customerId, @"\", imageName);
    return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...