我正在使用 ASP.Net Mvc4、Razor 和 javscript/Jquery 开发应用程序。我需要显示存储在远程服务器上的图像,这些图像将落入组件“滑块”中。
我恢复了图像的远程地址,并将它们存储在带有 json 的控制器的字节 [] 列表中。字节图像类:
public class ByteImagenes {
public byte[] byimagen { get; set; }
public ByteImagenes(byte[] byImagen) {
byimagen = byImagen;
}
}
动作控制器:
public JsonResult AlbumFoto(string Directorio){
var Lista = Galeria(true, Directorio);
return Json(new { Fotos = Lista });
}
private List<ByteImagenes> Galeria(bool Remoto, string Directorio){
string path = string.Empty;
DirectoryInfo dir = null;
List<ByteImagenes> flistImagenes = new List<ByteImagenes>();
if (!Remoto){
path = "/" + Directorio + "/";
dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + Directorio);
}
else {
path = Directorio;
dir = new DirectoryInfo(Directorio);
}
FileInfo[] fileList = dir.GetFiles("*.*", SearchOption.AllDirectories);
var fileQuery = from file in fileList
where ((file.Extension == ".jpg") ||
(file.Extension == ".png") ||
(file.Extension == ".gif") ||
(file.Extension == ".jpeg"))
orderby file.Name
select file;
foreach (var file in fileQuery){
var b = System.IO.File.ReadAllBytes(path + file.Name);
flistImagenes.Add(new ByteImagenes(b));
}
return flistImagenes;
}
在视图中,我在函数 javascript 中创建我的画廊图片。在此功能 javascript 中,我无法显示图像。函数javascript:
function CrearGaleria(data) {
var elem;
$.each(data.Fotos, function (key, val) {
var _ParamImp = val.byimagen;
var link2 = '@Html.Raw("data:image;base64,@System.Convert.ToBase64String(Param)")';
link2 = link2.replace("Param", _ParamImp);
alert(link2);
elem = "<li><a><img src=" + link2 + " /></a></li>";
$("#ulImages").append(elem);
})
iniciarEfecto();
}
警报(link2)这告诉我:
我无法从数组字节加载 src 中的图像如何解决这个问题?
编辑我可以解决这个问题...我在 byte[] now string 之前更改了我的类
public class Imagenes
{
public string imagen { get; set; }
public Imagenes(string sImagen)
{
imagen = sImagen;
}
}
当加载我在 foreach Convert.ToBase64String 的私有 List Galeria 中更改的值时
foreach (var file in fileQuery)
{
var b = System.IO.File.ReadAllBytes(path + file.Name);
listImagenes.Add(new Imagenes(Convert.ToBase64String(b)));
}
return listImagenes;
在视图中的javascript中:
function CrearGaleria(data) {
var elem;
$.each(data.Fotos, function (key, val) {
elem = '<li><a><img src="data:image;base64,' + val.imagen + '"/></a></li>';
$("#ulImages").append(elem);
})
iniciarEfecto();
}
现在我可以显示图像了。:-)