ASP.NETMVC-有一个在响应中返回图像的控制器方法
本文关键字:图像 控制器 方法 返回 NETMVC- 有一个 响应 ASP | 更新日期: 2023-09-27 18:24:41
如何制作一个名为GetMyImage()
的控制器方法,该方法返回一个图像作为响应(即图像本身的内容)?
我曾想过将返回类型从ActionResult
更改为string
,但这似乎没有如预期的那样起作用。
使用控制器的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");
}