Javascript 在ASP.NETMVC中使用Ajax在客户端站点上获取字节图像和显示图像
我把图像转换成字节,现在我想用byteImage在浏览器中显示图像,我该怎么做呢。我只得到了两个数据,一个是图像ID,另一个是图像名称并显示在表中,但我不能在表中显示图像 型号: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;
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
以下是一些您可以探索的想法
干杯以下是一些你可以探索的想法
干杯好的,您可以从这里退出这是为您自己的套件重写代码的唯一示例。这不完全是一个想法
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编码字符串发送所有图像可能需要很长时间。从您的问题中,我可以假设您将所有图像存储到某种数据库中,对吗?您想走哪条路?您想走哪条路,我只是在客户端查看图像列表-