(, ) - , . / jQuery, , . , (https://github.com/jqueryfiletree/jqueryfiletree/blob/master/dist/connectors/Asp.Net-MVC/FileTreeController.cs) PHP, , , (https://github.com/jqueryfiletree/jqueryfiletree/blob/master/dist/connectors/jqueryFileTree.php), , .
. , , - . , , .NET, , 4.6 Core
[HttpPost]
public virtual ActionResult GetFiles(string dir, bool multiSelect,
bool onlyFolders, bool onlyFiles)
{
const string baseDir = @"/App_Data/userfiles/";
dir = Server.UrlDecode(dir);
string realDir = Server.MapPath(baseDir + dir);
if (! realDir.StartsWith(Server.MapPath(baseDir)))
{
realDir = Server.MapPath(baseDir);
dir = "/";
}
List<FileTreeViewModel> files = new List<FileTreeViewModel>();
DirectoryInfo di = new DirectoryInfo(realDir);
foreach (DirectoryInfo dc in di.GetDirectories())
{
files.Add(new FileTreeViewModel() { Name = dc.Name, Path = String.Format("{0}{1}\\", dir, dc.Name), IsDirectory = true });
}
foreach (FileInfo fi in di.GetFiles())
{
files.Add(new FileTreeViewModel() { Name = fi.Name, Ext = fi.Extension.Substring(1).ToLower(), Path = dir+fi.Name, IsDirectory = false });
}
if(onlyFolders){
files = files.Where(x=>x.IsDirectory).ToList();
}
if(onlyFiles){
files = files.Where(x=>!x.IsDirectory).ToList();
}
return PartialView(files);
}