2009-05-19 19 views

cevap

104

Görüntüyü, veritabanından görüntülenecek görüntünün kimliğini alan bir eylemi göster ile görüntülemek için bir denetleyici oluşturun. Eylem, görüntü verilerini uygun içerik türüyle içeren bir FileResult döndürmelidir. Size göre

public class ImageController : Controller 
{ 
    public ActionResult Show(int id) 
    { 
     var imageData = ...get bytes from database... 

     return File(imageData, "image/jpg"); 
    } 
} 

, görüntüyü oluşturmak ve denetleyici ve eylemi kullanarak görüntü için bir yol inşa etmek görüntü id kullanın.

<img src='<%= Url.Action("show", "image", new { id = ViewData["imageID"] }) %>' /> 
+0

Bu yöntem benim için harika çalıştı. –

+0

Ve ben. İyi şeyler. – Dave

+0

me 3. harika. Teşekkürler! – Laguna

-2

Eğer iki sütun, "isim" ve "binary_image" ile bir DataRow (dr) sahip varsayarsak Bu yazı oldukça eski olduğunu biliyorum

Byte[] bytes = (Byte[])dr["Data"]; 
Response.Buffer = true; 
Response.Charset = ""; 

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.ContentType = dr["Image/JPEG"].ToString(); 

Response.AddHeader("content-disposition", "attachment;filename=" & dt.Rows[0]["Name"].ToString()); 

Response.BinaryWrite(bytes); 
Response.Flush(); 
Response.End(); 
4

(binary_image ikili bilgi içerir) ama öyleydi i çoğunlukla Augi cevap bunu nasıl anlamaya çalışırken zaman geldi ki ilk kişilerden biri doğruydu ama meclislerinin çoğu i mvc2 önizleme indir

  1. tarihli 1

  2. i zaten o şeyleri bulmak ve onu

bu haline ne olduğunu anlamaya çalışırken yaklaşık bir saat için arama edemedim microsoft.web.mvc şeyler hakkında endişe etmeye gerek kodudur i denedim benim bakış sayfası için şimdi bu

public ActionResult GetImage(int id) 
{ 
    byte[] imageData = storeRepository.ReturnImage(id); 

    //instead of what augi wrote using the binarystreamresult this was the closest thing i found so i am assuming that this is what it evolved into 
    return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/jpeg"); 
} 

//in my repository class where i have all the methods for accessing data i have this 

public byte[] ReturnImage(int id) 
{ 
    // i tried his way of selecting the right record and preforming the toArray method in the return statment 
    // but it kept giving me an error about converting linq.binary to byte[] tried a cast that didnt work so i came up with this 
    byte[] imageData = GetProduct(id).ProductImage.ToArray(); 
    return imageData; 
} 

var ben mağaza denilen benim denetleyicisi sınıfında tip görüntüde

bir db alanından bir görüntüyü görüntüleme benim için çalıştığını yazdı yollarla el türlü ben bu biçimlerinde bulunan ve hiçbir şey ı i düşünebildiğim tüm şeyin en basit bir heves çalıştı böylece onlar sadece modası geçmiş varsayıyorum çalıştı ve mükemmel i bir hata alıyorum tuttu

<image src='/store/getimage/<%= Html.Encode(Model.productID) %>' alt="" /> 

çalıştı img etiketlerini yayınlama hakkında sitesinden böylece bir akım cevap

http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30886

2
için tüm gün av kimseyi engeller.Ahududu

umut img yukarıdaki imajını değiştirmek emin olun 10

6

bu kullanmanın kabul cevap:

<img src='<%= Url.Action("show", "image", new { id = ViewData["imageID"] }) %>' 

mvc 4 için güncellenmiş sözdizimi şu şekilde olmalıdır ince ama modası geçmiş:

Ayrıca
<img src='@Url.Action("show", "image", new { id = ViewData["imageID"] })' /> 

, ben bu işlevselliği gerektiğinde bulmak Görünümü için başka verileri zaten geçiriyorum, bu nedenle Model'i ViewData yerine kullanmak güzel.senin görünümünden Nihayet

public ActionResult Index() { 
    MyEntity entity = fetchEntity(); 

    MyModel model = new MyModel { 
     SomeData = entity.Data, 
     FileId = entity.SomeFile.ID 
    }; 

    return View(model); 
} 

:

<img src='@Url.Action("show", "image", new { id = Model.FileId })' /> 

kabul yanıt için denetleyici üzerinde "Göster" yöntemi çalışacaktır ama kodlanmış değiştirecek Kumandanızda itibaren

public class MyModel { 
    public string SomeData {get;set;} 
    public int FileId {get; set;} 
} 

File.ContentType'ı kullanmak için "image/jpg" - bunu bayt [] ile birlikte saklayabilirsiniz, böylece kullanıcıların kendi görüntülerini yükleyip yüklemediğini tahmin etmenize gerek yoktur.