ASP.NETMVC-有一个在响应中返回图像的控制器方法

本文关键字:图像 控制器 方法 返回 NETMVC- 有一个 响应 ASP | 更新日期: 2023-09-27 18:24:41

如何制作一个名为GetMyImage()的控制器方法,该方法返回一个图像作为响应(即图像本身的内容)?

我曾想过将返回类型从ActionResult更改为string,但这似乎没有如预期的那样起作用。

ASP.NETMVC-有一个在响应中返回图像的控制器方法

使用控制器的File方法返回FilePathResult

public ActionResult GetMyImage(string ImageID)
{
    // Construct absolute image path
    var imagePath = "whatever";
    return base.File(imagePath, "image/jpg");
}

File方法有几个重载。使用最适合你的情况的方法。例如,如果您想发送Content-Disposition标头,以便用户获得"另存为"对话框,而不是在浏览器中看到图像,则您可以传入第三个参数string fileDownloadName

查看FileResult类。有关用法示例,请参阅此处。

您可以这样使用FileContentResult

byte[] imageData = GetImage(...); // or whatever
return File(imageData, "image/jpeg");
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");
}

只需根据您的情况尝试其中一种即可(从这里复制):

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");
}