[英]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.