【问题标题】:Asp.net MVC retrieve many images from remote serverAsp.net MVC 从远程服务器检索许多图像
【发布时间】:2015-02-22 02:36:28
【问题描述】:

我使用框架字 4.0 的 Asp.Net MVC 4 我在控制器中使用此代码从远程服务器检索图像:

private List<Imagenes> Galeria(bool Remoto, string Directorio){
        string path = string.Empty;
        DirectoryInfo dir = null;
        List<Imagenes> listImagenes = new List<Imagenes>();
        path = Directorio;
        dir = new DirectoryInfo(Directorio);           
        FileInfo[] fileList = dir.GetFiles("*.*", SearchOption.AllDirectories);

        var fileQuery = from file in fileList
                        where ((file.Extension.ToUpper() == ".JPG") ||
                               (file.Extension.ToUpper() == ".PNG") ||
                               (file.Extension.ToUpper() == ".GIF") ||
                               (file.Extension.ToUpper() == ".JPEG"))
                        orderby file.Name
                        select file;

        foreach (var file in fileQuery)
        {
            var b = System.IO.File.ReadAllBytes(path + file.Name);                
            listImagenes.Add(new Imagenes(Convert.ToBase64String(b)));
        }
        return listImagenes;
    }

public class Imagenes
{
    public string imagen { get; set; }
    public Imagenes(string sImagen)
    {
        imagen = sImagen;
    }
}

如果目录中的图像数量为 5,则此方法有效,如果它们超过 5,我会出现内存不足异常。 我该如何解决这个问题?如果在远程目录中我有超过 30 个图像

【问题讨论】:

  • 哪一行导致异常?
  • @MikeG in var b = System.IO.File.ReadAllBytes(path + file.Name);

标签: c# asp.net-mvc asp.net-mvc-4 image-processing file-io


【解决方案1】:

为避免从一开始就检索所有文件,请尝试以下操作:

        FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories).
        Where( f => 
               f.Extension.ToUpper() == ".JPG" || 
               f.Extension.ToUpper() == ".PNG" || 
               f.Extension.ToUpper() == ".GIF" || 
               f.Extension.ToUpper() == ".JPEG").
        ToArray<FileInfo>();

此外,您应该在下一次文件迭代之前清除 Byte 数组:

        Array.Resize<byte>(ref b, 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多