Javascript 在ASP.NETMVC中使用Ajax在客户端站点上获取字节图像和显示图像

Javascript 在ASP.NETMVC中使用Ajax在客户端站点上获取字节图像和显示图像,javascript,c#,jquery,json,asp.net-mvc,Javascript,C#,Jquery,Json,Asp.net Mvc,我把图像转换成字节,现在我想用byteImage在浏览器中显示图像,我该怎么做呢。我只得到了两个数据,一个是图像ID,另一个是图像名称并显示在表中,但我不能在表中显示图像 型号: public class ImageFile { public int ID { get; set; } public string Image_Name { get; set; } public byte[] ImageInbyte { get; set;

我把图像转换成字节,现在我想用byteImage在浏览器中显示图像,我该怎么做呢。我只得到了两个数据,一个是图像ID,另一个是图像名称并显示在表中,但我不能在表中显示图像

型号:

   public class ImageFile
    {
        public int ID { get; set; }
        public string Image_Name { get; set; }
        public byte[] ImageInbyte { get; set; }
    }
控制器:

        public JsonResult GetAllImageList()
        {
            var allImage_List = _imageManager.GetAll();
            return Json(allImage_List, JsonRequestBehavior.AllowGet);
        }
获取Json请求数据:

[{"ID":1,"Image_Name":"test","ImageInbyte":[255,216,255,224,0,16,74,70,73,70,0,1]}]
在表中插入Json数据:

$(document).ready(function () {
            $.getJSON("/SuperAdmin/Image/GetAllImageList",
                function (json) {
                    cache: false;
                    var tr;
                    //Append each row to html table
                    for (var i = 0; i < json.length; i++) {
                        var serialNum = i + 1; 
                        tr = $('<tr/>');
                        tr.append("<td>" + serialNum + "</td>"); 
                        tr.append("<td>" + json[i].ID + "</td>");
                        tr.append("<td>" + json[i].Image_Name + "</td>");
                        tr.append("<td>" + json[i].ImageInByte + "</td>");
                        $('#MydataTable').append(tr);
                        serialNum++; //increment serialNum 
                        $(document).ready(Datatable_show); //Call DataTable 
                    }
                });
        });
$(文档).ready(函数(){
$.getJSON(“/SuperAdmin/Image/GetAllImageList”,
函数(json){
缓存:false;
var-tr;
//将每一行追加到html表中
for(var i=0;i
以下是一些您可以探索的想法

  • 将单个图像发送到浏览器

    返回文件(ImageInbyte,“image/jpeg”,image_Name+“”+ID+“.jpeg”)

  • 将字节数组转换为文件并通过内存流发送

    使用(MemoryStream mStream=新的MemoryStream(ImageInbyte)) { 返回Image.FromStream(mStream); }

  • 将字节数组转换为文件,然后转换为base64编码图像并发送到浏览器

    Byte[]bytes=br.ReadBytes((Int32)ImageInbyte.Length); string base64String=Convert.ToBase64String(字节,0,字节.长度); string imageUrl=“数据:图像/jpeg;base64,”+base64String

  • 我希望这能引导你解决你的问题


    干杯

    以下是一些你可以探索的想法

  • 将单个图像发送到浏览器

    返回文件(ImageInbyte,“image/jpeg”,image_Name+“”+ID+“.jpeg”)

  • 将字节数组转换为文件并通过内存流发送

    使用(MemoryStream mStream=新的MemoryStream(ImageInbyte)) { 返回Image.FromStream(mStream); }

  • 将字节数组转换为文件,然后转换为base64编码图像并发送到浏览器

    Byte[]bytes=br.ReadBytes((Int32)ImageInbyte.Length); string base64String=Convert.ToBase64String(字节,0,字节.长度); string imageUrl=“数据:图像/jpeg;base64,”+base64String

  • 我希望这能引导你解决你的问题


    干杯

    好的,您可以从这里退出这是为您自己的套件重写代码的唯一示例。这不完全是一个想法

    string jsonReply = "{";
    
    foreach (ImageFile image in allImage_List)
    {
      Byte[] bytes = br.ReadBytes((Int32)image.Item3.Length); 
      string base64String = Convert.ToBase64String(bytes, 0, bytes.Length); 
      string imageBase64= "data:image/jpeg;base64," + base64String;
    
      jsonReply += "[\"id\": " + image.Item1 + ", \"name\": " + image.Item2 + "\"image\": 
               " + imageBase64 + "],";
    }
    
    jsonReply = jsonReply.TrimEnd(',');
    jsonReply += "}";
    
    return new JsonResult(jsonReply);
    
    然后您需要在jQuery中循环,并根据需要使用它。我再次提醒你们,若你们有很长的图像列表,那个么它将遭受严重的性能损失和很长的加载时间。一般来说,base64编码的图像可以传输到非常长的字符串

    我自然更喜欢从数据库存储中删除图像,并将其保存为硬盘上的物理文件,并将图像路径和文件名存储到数据库中。但这完全是另一回事,需要更改图像存储的应用程序逻辑

    在这个阶段,考虑到应用程序的瓶颈,您可能应该坚持使用base64编码的图像并将其作为字符串发送

    希望能有帮助


    干杯

    好的,您可以从这里退出这是为您自己的套件重写代码的唯一示例。这不完全是一个想法

    string jsonReply = "{";
    
    foreach (ImageFile image in allImage_List)
    {
      Byte[] bytes = br.ReadBytes((Int32)image.Item3.Length); 
      string base64String = Convert.ToBase64String(bytes, 0, bytes.Length); 
      string imageBase64= "data:image/jpeg;base64," + base64String;
    
      jsonReply += "[\"id\": " + image.Item1 + ", \"name\": " + image.Item2 + "\"image\": 
               " + imageBase64 + "],";
    }
    
    jsonReply = jsonReply.TrimEnd(',');
    jsonReply += "}";
    
    return new JsonResult(jsonReply);
    
    然后您需要在jQuery中循环,并根据需要使用它。我再次提醒你们,若你们有很长的图像列表,那个么它将遭受严重的性能损失和很长的加载时间。一般来说,base64编码的图像可以传输到非常长的字符串

    我自然更喜欢从数据库存储中删除图像,并将其保存为硬盘上的物理文件,并将图像路径和文件名存储到数据库中。但这完全是另一回事,需要更改图像存储的应用程序逻辑

    在这个阶段,考虑到应用程序的瓶颈,您可能应该坚持使用base64编码的图像并将其作为字符串发送

    希望能有帮助


    Cheers

    @Bukovich Json从控制器返回所有图像列表,以及如何在客户端转换ImageInbyte。请详细分享。谢谢您无法将客户端的字节数组转换为图像,您需要将其作为服务器上的相对文件路径发送,并让web服务器“完成”将文件发送到web浏览器的工作,或者您需要将图像转换为base64编码的字符串图像。请注意,如果您有很长的图像列表,那么通过base64编码字符串发送所有图像可能需要很长时间。从您的问题中,我可以假设您将所有图像存储到某种数据库中,对吗?您想走哪条路?您想走哪条路,我只是在客户端查看图像列表,此代码返回JSON结果。@Bukovich JSON从控制器返回所有图像列表,以及如何在客户端转换ImageInbyte。请详细分享。谢谢您无法将客户端的字节数组转换为图像,您需要将其作为服务器上的相对文件路径发送,并让web服务器“完成”将文件发送到web浏览器的工作,或者您需要将图像转换为base64编码的字符串图像。请注意,如果您有很长的图像列表,那么通过base64编码字符串发送所有图像可能需要很长时间。从您的问题中,我可以假设您将所有图像存储到某种数据库中,对吗?您想走哪条路?您想走哪条路,我只是在客户端查看图像列表-