2

我正在使用 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();
}

现在我可以显示图像了。:-)

4

0 回答 0