簡體   English   中英

Asp.net MVC從遠程服務器檢索許多圖像

[英]Asp.net MVC retrieve many images from remote server

我將Asp.Net MVC 4與frameword 4.0結合使用,我在控制器中使用以下代碼從遠程服務器檢索圖像:

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張圖像

為了避免從一開始就檢索所有文件,請嘗試以下操作:

        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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM