2009-05-19 14 views
53

में डेटाबेस से छवि प्रदर्शित करें मुझे नियंत्रक से बाइट सरणी प्रारूप में एक छवि मिल रही है, मैं इसे दृश्य में कैसे प्रदर्शित कर सकता हूं? सबसे सरल तरीके से।एएसपी एमवीसी

उत्तर

104

छवियों को प्रदर्शित करने के लिए छवियों की आईडी लेता है जो एक शो क्रिया के साथ छवियों को प्रदर्शित करने के लिए एक नियंत्रक बनाएँ। कार्रवाई को एक फ़ाइलResult वापस करना चाहिए जिसमें उपयुक्त सामग्री प्रकार के साथ छवि डेटा शामिल है।

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

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

आपके विचार में, छवि का निर्माण और नियंत्रक और कार्रवाई का उपयोग कर छवि के लिए एक रास्ता के निर्माण के लिए छवि आईडी का उपयोग करें।

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

यह विधि मेरे लिए बहुत अच्छा काम करती है। –

+0

और मैं। अच्छी चीज़। – Dave

+0

मुझे 3. बढ़िया। धन्यवाद! – Laguna

-2

मान लें कि आप एक DataRow दो कॉलम, "नाम" और "binary_image" के साथ (डॉ) है

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 द्विआधारी जानकारी शामिल है), लेकिन यह था पहला यह है कि आया था जब मैं कैसे सबसे अधिक भाग AUGI उत्तर के लिए यह करने के लिए यह पता लगाने की कोशिश कर रहा था में से एक सही था लेकिन विधानसभाओं के सबसे बाहर दिनांकित हैं

  1. मैं डाउनलोड mvc2 पूर्वावलोकन 1

  2. microsoft.web.mvc सामान मैं सके के बारे में एक घंटे के लिए खोज क्या यह

इस रूप में विकसित हो पता लगाने की कोशिश भी है कि सामान के किसी भी खोजने के लिए और के बारे में चिंता करने की कोई जरूरत कोड है मैं ने लिखा है कि मेरी नियंत्रक वर्ग जो मैं दुकान कहा जाता है में टाइप छवि

का एक डाटाबेस क्षेत्र से एक छवि प्रदर्शित करने के लिए मेरे लिए काम करता मैं मैं करने की कोशिश की मेरे विचार पृष्ठ के लिए अब इस

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

है तरीकों में से अल प्रकार मैं इन रूपों में पाया जाता है और कुछ भी नहीं काम किया मैं यह सोचते हैं रहा हूँ वे सिर्फ पुराना थे तो मैं सब बात मैं के बारे में सोच सकता है का सरलतम एक लहर की कोशिश की और यह पूरी तरह

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

मैं एक त्रुटि हो रही है काम img टैग पोस्ट करने के बारे साइट से तो आप img को

आशा एक मौजूदा जवाब

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

2
के लिए सारा दिन शिकार से किसी को रोकने के लिए मदद करता है कि इसके बाद के संस्करण छवि को बदलने के लिए सुनिश्चित करें 10
6

इस का उपयोग कर के स्वीकार किए जाते हैं जवाब:

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

ठीक है, लेकिन पुरानी MVC 4 के लिए अद्यतन वाक्य रचना अब पढ़ना चाहिए है:

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

इसके अलावा, मुझे लगता है कि जब मैं इस कार्यक्षमता की जरूरत है कि मैं पहले से ही दृश्य में अन्य डेटा पास कर रहा हूं इसलिए व्यूडेटा के बजाय मॉडल का उपयोग करना अच्छा है।

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 })' /> 

"दिखाएँ" स्वीकार किए जाते हैं जवाब के लिए नियंत्रक पर विधि काम करेगी, लेकिन मैं हार्डकोडेड बदल जाएगा

public class MyModel { 
    public string SomeData {get;set;} 
    public int FileId {get; set;} 
} 
अपने नियंत्रक से

File.ContentType का उपयोग करने के लिए "छवि/jpg" - आप इसे बाइट [] के साथ स्टोर कर सकते हैं, इसलिए यदि उपयोगकर्ता अपनी छवियों को अपलोड कर रहे हैं तो आपको अनुमान लगाने की आवश्यकता नहीं है।

संबंधित मुद्दे