2016-11-01 34 views
0
$.ajax({ 
        type: 'GET', 
        dataType: 'image/jpeg', 
        url: '/Home/GetImage/' + img , 
        success: function (data) { 
         i = new Image(); 
         i.src = data; 
         $('#imageresult').append(i); 
        }, 
        error: function() { 
         alert('error'); 
        }, 
}); 


[HttpGet] 
public ActionResult GetImage(string img) 
{ 
    string imageFile = System.Web.HttpContext.Current.Server.MapPath("~/Profile/Small/"); 
    var path = Path.Combine(imageFile, img); 
    var srcImage = Image.FromFile(path); 
    var stream = new MemoryStream(); 
    srcImage.Save(stream, ImageFormat.Jpeg); 

    return File(stream.ToArray(), "image/jpeg"); 
} 

它始終屬於錯誤函數。如果我刪除dataType,那麼它不屬於錯誤函數,但它只是在視圖中顯示長字符串。爲什麼不能正常工作並顯示圖像?我無法返回圖像文件,並在Asp.net MVC中使用Ajax在View中顯示它MVC

+1

你不發送任何數據,那麼,爲什麼POST? –

+0

爲什麼不使用GET而不是POST? Agre,如果您使用POST,我認爲您需要發送一些數據。 –

+0

好吧,我將其更改爲'GET' – sommeguyy

回答

1

你可以做這樣的事情:

public ActionResult GetImage(string img) 
{ 
    string imageFile = System.Web.HttpContext.Current.Server.MapPath("~/Profile/Small/"); 
    var path = Path.Combine(imageFile, img); 
    var srcImage = Image.FromFile(path); 
    var stream = new MemoryStream(); 
    srcImage.Save(stream, ImageFormat.Jpeg); 

    return Json(Convert.ToBase64String(stream.ToArray()), JsonRequestBehavior.AllowGet); 
} 

和Ajax調用:

$.ajax({ 
     type: 'GET', 
     url: '@Url.Action("GetImage", "Home")', 
     success: function (data) { 
      $("#ItemPreview").attr('src', 'data:image/png;base64,' + data); 
     }, 
     error: function() { 
      alert('error'); 
     }, 
    }); 

和視圖:

<img id="ItemPreview" src="" /> 
當然

可以追加img動態,然後綁定其源後。

+0

謝謝....它的工作。 – sommeguyy

+0

不客氣。 – SeM

0

你與它的實際內容混亂的圖像的URL(圖形字節)。

/GetImage調用返回字節,但不能將數據字節放在i.src屬性中,因爲該屬性需要輸入一個URL。
如果你忘了Ajax調用,只需使用i.src = '/Home/GetImage/' + img;它可能會奏效。

+0

好吧,我會根據你的回答嘗試其他的東西。 – sommeguyy

相關問題