2016-11-24 5 views
11

asp.net कोर वेब एपीआई का उपयोग करना, मैं एक jpeg छवि धारा वापस जाने के लिए मेरी नियंत्रक कार्रवाई विधि करना चाहते हैं।
मेरे वर्तमान कार्यान्वयन में, ब्राउज़र केवल एक जेसन स्ट्रिंग प्रदर्शित करता है। मेरी अपेक्षा ब्राउज़र में छवि को देखना है।वापसी jpeg छवि WebAPI

जबकि क्रोम डेवलपर उपकरण का उपयोग कर डिबगिंग मैंने पाया कि सामग्री प्रकार अभी भी

Content-Type:application/json; charset=utf-8

प्रतिक्रिया हेडर में लौट आए है, भले ही मेरी कोड में मैं मैन्युअल रूप से सामग्री प्रकार के लिए "image/jpeg" सेट ।

एक समाधान के लिए खोज रहे मेरे जाल एपीआई

नीचे
[HttpGet] 
    public async Task<HttpResponseMessage> Get() 
    { 
     var image = System.IO.File.OpenRead("C:\\test\random_image.jpeg"); 
     var stream = new MemoryStream(); 

     image.CopyTo(stream); 
     stream.Position = 0;    
     result.Content = new StreamContent(image); 
     result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
     result.Content.Headers.ContentDisposition.FileName = "random_image.jpeg"; 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 
     result.Content.Headers.ContentLength = stream.Length; 

     return result; 
    } 

enter image description here

रूप

उत्तर

15

स्वच्छ समाधान उपयोग FilestreamResult है !!

[HttpGet] 
    public async Task<IActionResult> Get() 
    { 
     var image = System.IO.File.OpenRead("C:\\test\random_image.jpeg"); 
     return File(image, "image/jpeg"); 
    } 

स्पष्टीकरण:
Asp.Net कोर में आप नियंत्रक के अंदर में निर्मित फ़ाइल() विधि का उपयोग करने के लिए है। यह आपको सामग्री प्रकार मैन्युअल रूप से सेट करने की अनुमति देगा। HttpResponseMessage को न बनाएं और वापस न करें, जैसे कि आप Asp.net वेब api 2 का उपयोग करने के लिए उपयोग किए जाते थे 2. यह कुछ भी नहीं करता है, त्रुटियों को फेंकने भी नहीं !!

0
[HttpGet("Image/{id}")] 
    public IActionResult Image(int id) 
    { 
     if(id == null){ return NotFound(); } 
     else{ 

      byte[] imagen = "@C:\\test\random_image.jpeg"; 
      return File(imagen, "image/jpeg"); 
     } 
    } 
+1

यह कभी काम नहीं कर सकता है। – Ben