2012-02-13 34 views
15

Làm cách nào để tạo phương thức điều khiển được gọi là GetMyImage() trả về hình ảnh làm phản hồi (tức là nội dung của chính hình ảnh)?ASP .NET MVC - Có phương pháp điều khiển trả về hình ảnh trong phản hồi không?

Tôi đã nghĩ về việc thay đổi kiểu trả về từ ActionResult thành string, nhưng điều đó dường như không hoạt động như mong đợi.

+0

những gì bạn có nghĩa là 'trả về một hình ảnh' gì Type là nó tại thời điểm đó? – naspinski

Trả lời

20

Return FilePathResult sử dụng File phương pháp điều khiển

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

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

Có một số phương pháp overloads of File. Sử dụng bất cứ điều gì là thích hợp nhất cho tình hình của bạn. Ví dụ: nếu bạn muốn gửi tiêu đề Content-Disposition để người dùng nhận được hộp thoại SaveAs thay vì nhìn thấy hình ảnh trong trình duyệt bạn sẽ chuyển trong tham số thứ ba string fileDownloadName.

+3

Wow, bạn phải yêu ASP.NET MVC. –

1

Đơn giản chỉ cần thử một trong những tùy thuộc vào tình hình của bạn (sao chép từ here):

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

Bạn có thể sử dụng FileContentResult như thế này:

byte[] imageData = GetImage(...); // or whatever 
return File(imageData, "image/jpeg"); 
2
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"); 
} 
Các vấn đề liên quan