2016-07-02 8 views
2

Razor '@Action'で画像を取得できますが、Ajaxで画像を取得することはできません。私は、コントローラ内の を書く:Jquery Ajaxで画像を取得する方法

 public ActionResult getCommodityPic() 
    { 
     var f= File(Server.MapPath("~/App_Data/CommodityPics/eee/1") + ".jpg", "image/jpg"); 
     return f; 
    } 

やJavaスクリプトで:

$(document).ready(function() { 
    ShowCommodities(); 
    getCommodityPic(); 
}); 
function getCommodityPic() { 
    $.ajax({ 
     url: '@Url.action("getCommodityPic")', 
     type: 'Get', 
     dataType: 'image/jpg', 
     success: function (Data, Status, jqXHR) { 
      $('#img1').attr('src', Data); 
     } 
    }); 
+0

というモデル - ビューに注意してください。 -controllerタグはパターンに関する質問です。 ASP.NET-MVCの実装には特定のタグがあります。 –

+0

ファイルのパスを返してから、戻り値Json(filePath、JsonRequestBehavior.AllowGet);(ファイルをajaxで返すことはできません) –

答えて

1
 $.ajax({ 
      url: '@Url.Action("DownloadPic", "MyController")', 
      contentType: 'application/json; charset=utf-8', 
      datatype: 'json', 
      data: { 
       id: Id 
      }, 
      type: "GET", 
      success: function (Data, Status, jqXHR) { 
       if (Data != "") { 
        alert("Empty"); 
        return; 
       } 
       window.location ='@Url.Action("DonloadPic","Mycontroller")'; 
      } 
     }); 

を:

public ActionResult DownloadPic(int? id) 
    { 
     Lesson l = new Lesson(); 
     l = db.Lesson.Single(p => p.id == id); 

     if (l.picture == null) 
     { 
      string targetFolder = System.Web.HttpContext.Current.Server.MapPath("~/Image/book-03.jpg"); 
      byte[] img = System.IO.File.ReadAllBytes(targetFolder); 
      return File(img, "image/jpg"); 
     } 
     return File(l.picture, "image/jpg"); 
    } 
0

あなたが動的に画像を表示したい場合は、これを試してみてください。これにはAjaxコールが必要ないかもしれません。

$('#img1').html('<img src="getCommodityPic" />') 

あなたは(その生のバイナリを読む)画像を処理したい場合は、この答えは助けるべきである - https://stackoverflow.com/a/20048852/6352160コントローラで

+0

getCommodityPic(getCommodityPic(5))のようにgetCommodityPicにパラメータを渡したい場合は –

+0

Tnx ....................... –

関連する問題