2011-09-26 19 views
36

मैं एफई उपयोग कर रहा हूँ 4.1 कोड पहले और सादगी के लिए, मान लीजिए कि मैं निम्नलिखित इकाई वर्ग डालते हैं:Convert बाइट सरणी

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Byte[] Image { get; set; } 
} 

मैं बनाने में कामयाब रहे एक वर्किंग व्यू व्यू जो किसी ऑब्जेक्ट ऑब्जेक्ट को डेटाबेस में जोड़ने की अनुमति देता है।

लेकिन जब मैं एक व्यक्ति के लिए विवरण प्रदर्शित करने के लिए आते हैं, मैं छवि प्रदर्शित करने पर अटक जाते हैं। कई घंटे के लिए गूगल खोज के बाद, मैं निम्नलिखित है:

<img src="@Html.Action("getImg", "Person", new { id = item.Id })" alt="Person Image" /> 
:

// To convert the Byte Array to the author Image 
public FileContentResult getImg(int id) 
{ 
    byte[] byteArray = DbContext.Persons.Find(id).Image; 
    return byteArray != null 
     ? new FileContentResult(byteArray, "image/jpeg") 
     : null; 
} 

और देखें जहाँ मैं व्यक्ति विवरण सूची के लिए प्रयास कर रहा हूँ में, मैं प्रदर्शित करने के लिए छवि प्राप्त करने के लिए निम्नलिखित है

हालांकि उपरोक्त काम नहीं कर रहा है, मेरा छवि स्रोत [src] विशेषता खाली रिटर्न

मैं बहुत मेरी छवियों को प्रदर्शित करने के लिए हो रही के साथ कुछ मदद की की सराहना करेंगे।

धन्यवाद।

सिवान।

उत्तर

35
इस तरह

:

<img src="@Url.Action("getImg", "Person", new { id = item.Id })" alt="Person Image" /> 

आप Url.Action और नहीं Html.Action जरूरत है, क्योंकि आप बस GetImg कार्रवाई करने के लिए एक यूआरएल उत्पन्न करना चाहते हैं। Html.Action कुछ entirely different करता है।

+2

बहुत बढ़िया, अब काम करने के लिए लगता है, ** ** डैरिन धन्यवाद :) – Ciwan

+0

लेकिन क्या होगा अगर यह कुछ पीडीएफ फाइल की बाइट सरणी है। हम पूर्वावलोकन के लिए एक लिंक कैसे प्रदर्शित कर सकते हैं या पीडीएफ डाउनलोड करने के लिए एक लिंक हो सकता है। । – Unbreakable

+0

क्या होगा यदि यह एक छवि नहीं है। हम इसे कैसे संभाल सकते हैं। जाहिर है हम पीडीएफ के – Unbreakable

54

अगर आप पहले से ही छवि अपने मॉडल में लोड होता है ऐसा करने का एक और भी आसान तरीका है: इस तरह से कर रहा

<img src="data:image;base64,@System.Convert.ToBase64String(Model.Image)" /> 

तुम सिर्फ छवि को लाने के लिए फिर से सर्वर के लिए जाने की जरूरत नहीं है जैसा कि आप कर रहे हैं डेटाबेस से byte[]

+0

के लिए img src टैग नहीं डाल सकते हैं यह काम करता है, लेकिन IE8 – refactor

+0

में 32KB की सीमा है लेकिन यह एक पीडीएफ फ़ाइल या शब्द फ़ाइल क्या है।हम रेजर कोड में सामग्री का पूर्वावलोकन करने के लिए एक लिंक कैसे प्रदर्शित कर सकते हैं। नियंत्रक कार्रवाई में प्रदान किया गया है हमारे पास बाइट सरणी है। – Unbreakable

0

मुझे पता चला कि एक रेजर एमवीसी पृष्ठ में मॉडल प्रॉपर्टी से गतिशील रूप से लोड की गई एसवीजी छवि को प्रदर्शित करने का सबसे अच्छा तरीका है HTML.DisplayFor (..) के साथ संयोजन में। ToHTMLString()। मेरे मामले में, छवि 64 नाम वाली मॉडल संपत्ति में संग्रहीत बेस 64 एसवीजी छवि + एक्सएमएल डेटा स्ट्रिंग है।

<img src='@Html.DisplayFor(model => model.Image).ToHtmlString()' /> 

यह लग रहा था एक ही रास्ता मैं क्रोम, Firefox और IE में ठीक से प्रदर्शित करने के लिए एसवीजी छवि प्राप्त करने में सक्षम था हो: यहाँ मेरी कोड है।

चीयर्स