Görüntüleyiciden bayt dizisi biçiminde bir resim alıyorum, Bunu nasıl görüntüleyebilirim? en basit şekilde.Asp mvc'deki tablodan görüntüyü göster
cevap
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"] }) %>' />
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();
(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
- tarihli 1
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
umut img yukarıdaki imajını değiştirmek emin olun 10
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.
Bu yöntem benim için harika çalıştı. –
Ve ben. İyi şeyler. – Dave
me 3. harika. Teşekkürler! – Laguna