Я хочу отобразить список всех файлов (.jpg, .mp3, .psd, .tiff и т. Д.) Из локального хранилища (места на жестком диске), и путь локального хранилища генерируется, когда запускается запрос SQL, например.У меня есть поля folder_name
, Subfolder_name
и Id
.
Итак, предположим, Query: Select Folder_name,Subfolder_name From Table where Id = 101;
предположим, что я получаю вывод Folder_name=Users,Subfolder_name = Public
.Теперь это значение должно быть передано в пути, например: Path =C:\Users\Public\
.И из этого пути я хочу отобразить все файлы в той же форме, в которой они были сохранены.
В моей текущей реализации я получаю список файлов в форме base64. Но я хочу в той же форме, как онисохранено. Например.если файл находится в jpg, то хотите отобразить список файлов jpg.
Я получаю список файлов в форме base64.
public List<Image> GetImagesBySourceKey(string ID)
{
List<Image> images = new List<Image>();
string sqlQuery = "select folder_name,Subfolder_name from Table where Id= '" +
Id+ "'";
foreach (DataRow dataRow in ExecuteQuery(sqlQuery))
{
images.Add(new Models.Image()
{
folder_name= dataRow["folder_name"].ToString(),
Subfolder_name = dataRow["Subfolder_name"].ToString()
});
DirectoryInfo d = new DirectoryInfo(@"C:\\Users\\bhagyeshc\\source\\repos\\abcd\\abcd\\" +
images[0].FileName + "\\" + Subfolder_name);
FileInfo[] Files = d.GetFiles("*.*"); //Getting files
foreach (FileInfo file in Files)
{
Image image = new Image();
var path = Path.Combine("~\\" + images[0].FileName + "\\" + Subfolder_name+ "\\" + file.Name);
image.Code = ImageBase64(path);
images.Add(image);
}
}
return images;
}
private string ImageBase64(string path)
{
path = System.Web.Hosting.HostingEnvironment.MapPath(path);
var ext = System.IO.Path.GetExtension(path);
var contents = System.IO.File.ReadAllBytes(path);
MemoryStream ms = new MemoryStream(contents);
byte[] imageBytes = ms.ToArray();
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}