public static FileExplorerResponse GetDetails(string path, string[] names) { FileExplorerResponse DetailsResponse = new FileExplorerResponse(); try { FileDetails[] fDetails = new FileDetails[names.Length]; for (int i = 0; i < names.Length; i++) { var absolutePath = ToAbsolute(path); absolutePath = CombinePaths(absolutePath, names[i]); var physicalPath = ToPhysicalPath(absolutePath); FileInfo info = new FileInfo(physicalPath); FileDetails fileDetails = new FileDetails(); fileDetails.Name = info.Name; fileDetails.Type = (info.Extension == "") ? "File Folder" : info.Extension; // Has period fileDetails.Location = info.FullName; fileDetails.Size = (info.Extension != "") ? info.Length : new DirectoryInfo(physicalPath).EnumerateFiles("*", SearchOption.AllDirectories).Sum(file => file.Length);; fileDetails.Created = info.CreationTime.ToString(); fileDetails.Modified = info.LastWriteTime.ToString(); fDetails[i] = fileDetails; } DetailsResponse.details = fDetails; return(DetailsResponse); } catch (Exception e) { DetailsResponse.error = e.GetType().FullName + ", " + e.Message; return(DetailsResponse); } }
public FileExplorerResponse Remove(string[] names, string path) { FileExplorerResponse DeleteResponse = new FileExplorerResponse(); try { string physicalPath = GetPath(path); List <FileAccessRules> FilesPermission = new List <FileAccessRules>(); for (int i = 0; i < names.Length; i++) { FileAccessRules permission = GetFilePermission(physicalPath, names[i], IsFile(CombineRelativePath(path, names[i]))); if (!permission.Read || !permission.Edit) { throw new ArgumentException("'" + path + names[i] + "' is not accessible. Access is denied."); } FilesPermission.Add(permission); } DeleteResponse = FileExplorerOperations.Remove(names, path); var items = DeleteResponse.files.ToArray(); for (int i = 0; i < items.Length; i++) { items[i].permission = FilesPermission[i]; } DeleteResponse.files = items; return(DeleteResponse); } catch (Exception e) { DeleteResponse.error = e.GetType().FullName + ", " + e.Message; return(DeleteResponse); } }
public FileExplorerResponse ReadData(string path, string filter) { FileExplorerResponse ReadResponse = new FileExplorerResponse(); try { ReadResponse = FileExplorerOperations.ReadData(path, filter); string physicalPath = GetPath(path); ReadResponse.cwd.permission = GetPathPermission(path); if (!ReadResponse.cwd.permission.Read) { DirectoryContent[] fileDetails = new DirectoryContent[0]; ReadResponse.files = fileDetails; return(ReadResponse); } var items = ReadResponse.files.ToArray(); for (int i = 0; i < items.Length; i++) { items[i].permission = GetFilePermission(physicalPath, items[i].name, items[i].isFile); if (items[i].isFile) { items[i].permission.EditContents = ReadResponse.cwd.permission.EditContents; items[i].permission.Upload = ReadResponse.cwd.permission.Upload; } } ReadResponse.files = items; return(ReadResponse); } catch (Exception e) { ReadResponse.error = e.GetType().FullName + ", " + e.Message; return(ReadResponse); } }
public FileExplorerResponse Paste(string sourceDir, string backupDir, string[] names, string option, IEnumerable <CommonFileDetails> commonFiles) { FileExplorerResponse PasteResponse = new FileExplorerResponse(); try { string phyPath = GetPath(sourceDir); for (int i = 0; i < names.Length; i++) { FileAccessRules FilePermission = GetFilePermission(phyPath, names[i], IsFile(CombineRelativePath(sourceDir, names[i]))); if (!FilePermission.Read || !FilePermission.Copy) { throw new ArgumentException("'" + sourceDir + names[i] + "' is not accessible. Access is denied."); } } FileAccessRules PathPermission = GetPathPermission(backupDir); if (!PathPermission.Read || !PathPermission.EditContents) { throw new ArgumentException("'" + backupDir + "' is not accessible. Access is denied."); } PasteResponse = FileExplorerOperations.Paste(sourceDir, backupDir, names, option, commonFiles); PasteResponse.files = SetPermission(backupDir, PasteResponse.files); return(PasteResponse); } catch (Exception e) { PasteResponse.error = e.GetType().FullName + ", " + e.Message; return(PasteResponse); } }
public static FileExplorerResponse Rename(string path, string oldname, string newname, IEnumerable <CommonFileDetails> commonFiles) { FileExplorerResponse RenameResponse = new FileExplorerResponse(); try { if (commonFiles != null) { foreach (var file in commonFiles) { file.Path = ToPhysicalPath(ToAbsolute(file.Path)); } } string oldpath = "", newpath = "", temppath = "", tempname = "Syncfusion_TempFolder"; path = ToAbsolute(path); if (!string.IsNullOrEmpty(oldname) && !string.IsNullOrEmpty(newname)) { oldpath = ToPhysicalPath(CombinePaths(path, oldname)); newpath = ToPhysicalPath(CombinePaths(path, newname)); temppath = ToPhysicalPath(CombinePaths(path, tempname)); FileInfo info = new FileInfo(oldpath); var isFile = (info.Extension != "") ? true : false; if (isFile) { info.MoveTo(newpath); } else { if (oldname.Equals(newname, StringComparison.OrdinalIgnoreCase)) { MoveDirectory(oldpath, temppath, commonFiles, true); MoveDirectory(temppath, newpath, commonFiles, true); } else { MoveDirectory(oldpath, newpath, commonFiles, true); } } var addedData = new[] { GetFileDetails(newpath) }; RenameResponse.files = addedData; return(RenameResponse); } else { throw new ArgumentNullException("name should not be null"); } } catch (Exception e) { RenameResponse.error = e.GetType().FullName + ", " + e.Message; return(RenameResponse); } }
public object doJSONPAction(string callback, string json) { object Data = null; var serializer = new JavaScriptSerializer(); FileExplorerParams args = (FileExplorerParams)serializer.Deserialize(json, typeof(FileExplorerParams)); try { if (args.ActionType != "Paste" && args.ActionType != "GetDetails") { string FilePath = FileExplorerOperations.ToPhysicalPath(FileExplorerOperations.ToAbsolute(args.Path)); } FileOperationController Rule = new FileOperationController(); FileAccessOperations operation = new FileAccessOperations(Rule.GetRules()); switch (args.ActionType) { case "Read": Data = operation.ReadData(args.Path, args.ExtensionsAllow); break; case "Search": Data = operation.Search(args.Path, args.ExtensionsAllow, args.SearchString, args.CaseSensitive); break; case "CreateFolder": Data = operation.NewFolder(args.Path, args.Name); break; case "Paste": Data = operation.Paste(args.LocationFrom, args.LocationTo, args.Names, args.Action, args.CommonFiles); break; case "Remove": Data = operation.Remove(args.Names, args.Path); break; case "Rename": Data = operation.Rename(args.Path, args.Name, args.NewName, args.CommonFiles); break; case "GetDetails": Data = operation.GetDetails(args.Path, args.Names); break; } HttpContext.Current.Response.Write(string.Format("{0}({1});", callback, serializer.Serialize(Data))); return(""); } catch (Exception e) { FileExplorerResponse Response = new FileExplorerResponse(); Response.error = e.GetType().FullName + ", " + e.Message; HttpContext.Current.Response.Write(string.Format("{0}({1});", callback, serializer.Serialize(Response))); return(""); } }
public object doJSONAction() { FileExplorerParams args = FileExplorerOperations.GetAjaxData(Request); if (args.ActionType == "Upload") { FileExplorerOperations.Upload(args.Files, args.Path); return(new HttpResponseMessage() { Content = new StringContent("ok", Encoding.UTF8, "text/plain") }); } try { if (args.ActionType != "Paste" && args.ActionType != "GetDetails") { var FilePath = FileExplorerOperations.ToPhysicalPath(FileExplorerOperations.ToAbsolute(args.Path)); } FileOperationController Rule = new FileOperationController(); FileAccessOperations operation = new FileAccessOperations(Rule.GetRules()); switch (args.ActionType) { case "Read": return(operation.ReadData(args.Path, args.ExtensionsAllow)); case "Search": return(operation.Search(args.Path, args.ExtensionsAllow, args.SearchString, args.CaseSensitive)); case "CreateFolder": return(operation.NewFolder(args.Path, args.Name)); case "Paste": return(operation.Paste(args.LocationFrom, args.LocationTo, args.Names, args.Action, args.CommonFiles)); case "Remove": return(operation.Remove(args.Names, args.Path)); case "Rename": return(operation.Rename(args.Path, args.Name, args.NewName, args.CommonFiles)); case "GetDetails": return(operation.GetDetails(args.Path, args.Names)); } return(""); } catch (Exception e) { FileExplorerResponse Response = new FileExplorerResponse(); Response.error = e.GetType().FullName + ", " + e.Message; return(Response); } }
public static FileExplorerResponse ReadData(string path, string filter) { FileExplorerResponse ReadResponse = new FileExplorerResponse(); try { var directory = new DirectoryInfo(ToPhysicalPath(ToAbsolute(path))); DirectoryContent cwd = new DirectoryContent(); cwd.name = directory.Name; cwd.size = 0; cwd.type = "Directory"; cwd.isFile = false; cwd.dateModified = directory.LastWriteTime.ToString(); cwd.hasChild = directory.GetDirectories().Length > 0 ? true : false; ReadResponse.cwd = cwd; filter = filter.Replace(" ", ""); var extensions = (filter ?? "*").Split(",|;".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries); var files = extensions.SelectMany(directory.GetFiles) .Select(file => new DirectoryContent { name = file.Name, isFile = true, size = file.Length, type = "File", dateModified = file.LastWriteTime.ToString(), hasChild = false }); var directories = directory.GetDirectories().Select(subDirectory => new DirectoryContent { name = subDirectory.Name, size = 0, type = "Directory", isFile = false, dateModified = subDirectory.LastWriteTime.ToString(), hasChild = subDirectory.GetDirectories().Length > 0 ? true : false }); object fileDetails = files.Concat(directories); ReadResponse.files = (IEnumerable <DirectoryContent>)fileDetails; return(ReadResponse); } catch (Exception e) { ReadResponse.error = e.GetType().FullName + ", " + e.Message; return(ReadResponse); } }
public static FileExplorerResponse Search(string path, string filter, string searchString, bool caseSensitive) { FileExplorerResponse ReadResponse = new FileExplorerResponse(); try { var directory = new DirectoryInfo(ToPhysicalPath(ToAbsolute(path))); filter = filter.Replace(" ", ""); var filterItems = directory.GetFiles(searchString, SearchOption.AllDirectories); var extensions = (filter ?? "*").Split(",|;".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries); var filteredList = directory.GetFiles(searchString, SearchOption.AllDirectories) .Select(file => new DirectoryContent { name = file.Name, isFile = true, size = file.Length, type = "File", dateModified = file.LastWriteTime.ToString(), hasChild = false, filterPath = file.FullName.Replace(directory.FullName, "").Replace(file.Name, "") }). Where(item => new Regex(WildcardToRegex(searchString), (caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase)).IsMatch(item.name)); var files = extensions.SelectMany(extention => filteredList.Where(a => new Regex(WildcardToRegex(extention), (caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase)).IsMatch(a.name))); files = files.Where(item => new Regex(WildcardToRegex(searchString), (caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase)).IsMatch(item.name)); var directories = directory.GetDirectories(searchString, SearchOption.AllDirectories).Select(subDirectory => new DirectoryContent { name = subDirectory.Name, size = 0, type = "Directory", isFile = false, dateModified = subDirectory.LastWriteTime.ToString(), hasChild = subDirectory.GetDirectories().Length > 0 ? true : false, filterPath = subDirectory.FullName.Replace(directory.FullName, "").Replace(subDirectory.Name, "") }). Where(item => new Regex(WildcardToRegex(searchString), (caseSensitive ? RegexOptions.None : RegexOptions.IgnoreCase)).IsMatch(item.name)); object fileDetails = files.Concat(directories); ReadResponse.files = (IEnumerable <DirectoryContent>)fileDetails; return(ReadResponse); } catch (Exception e) { ReadResponse.error = e.GetType().FullName + ", " + e.Message; return(ReadResponse); } }
public FileExplorerResponse NewFolder(string path, string name) { FileExplorerResponse CreateResponse = new FileExplorerResponse(); try { FileAccessRules PathPermission = GetPathPermission(path); if (!PathPermission.Read || !PathPermission.EditContents) { throw new ArgumentException("'" + path + "' is not accessible. Access is denied."); } CreateResponse = FileExplorerOperations.NewFolder(path, name); CreateResponse.files = SetPermission(path, CreateResponse.files); return(CreateResponse); } catch (Exception e) { CreateResponse.error = e.GetType().FullName + ", " + e.Message; return(CreateResponse); } }
public FileExplorerResponse Rename(string path, string oldName, string newName, IEnumerable <CommonFileDetails> commonFiles) { FileExplorerResponse RenameResponse = new FileExplorerResponse(); try { FileAccessRules FilePermission = GetFilePermission(GetPath(path), oldName, IsFile(CombineRelativePath(path, oldName))); if (!FilePermission.Read || !FilePermission.Edit) { throw new ArgumentException("'" + path + oldName + "' is not accessible. Access is denied."); } RenameResponse = FileExplorerOperations.Rename(path, oldName, newName, commonFiles); RenameResponse.files = SetPermission(path, RenameResponse.files); return(RenameResponse); } catch (Exception e) { RenameResponse.error = e.GetType().FullName + ", " + e.Message; return(RenameResponse); } }
public static FileExplorerResponse NewFolder(string path, string name) { FileExplorerResponse CreateResponse = new FileExplorerResponse(); try { if (!string.IsNullOrEmpty(name)) { var physicalPath = Path.Combine(ToPhysicalPath(ToAbsolute(path)), name); int directoryCount = 0; while (System.IO.Directory.Exists(physicalPath + (directoryCount > 0 ? "(" + directoryCount.ToString() + ")" : ""))) { directoryCount++; } physicalPath = physicalPath + (directoryCount > 0 ? "(" + directoryCount.ToString() + ")" : ""); if (!Directory.Exists(physicalPath)) { name = name + (directoryCount > 0 ? "(" + directoryCount.ToString() + ")" : ""); Directory.CreateDirectory(physicalPath); var directories = new[] { GetFileDetails(physicalPath) }; CreateResponse.files = directories; return(CreateResponse); } else { throw new ArgumentException(); } } else { throw new ArgumentNullException("name should not be null"); } } catch (Exception e) { CreateResponse.error = e.GetType().FullName + ", " + e.Message; return(CreateResponse); } }
public static FileExplorerResponse Remove(string[] names, string path) { FileExplorerResponse DeleteResponse = new FileExplorerResponse(); try { DirectoryContent[] removedFiles = new DirectoryContent[names.Length]; for (int i = 0; i < names.Length; i++) { var fullPath = CombinePaths(ToAbsolute(path), names[i]); if (!string.IsNullOrEmpty(names[i])) { var physicalPath = ToPhysicalPath(fullPath); removedFiles[i] = GetFileDetails(physicalPath); FileAttributes attr = File.GetAttributes(physicalPath); //detect whether its a directory or file if ((attr & FileAttributes.Directory) == FileAttributes.Directory) { DeleteDirectory(physicalPath); } else { System.IO.File.Delete(physicalPath); } } else { throw new ArgumentNullException("name should not be null"); } } DeleteResponse.files = removedFiles; return(DeleteResponse); } catch (Exception e) { DeleteResponse.error = e.GetType().FullName + ", " + e.Message; return(DeleteResponse); } }
public FileExplorerResponse Search(string path, string filter, string searchString, bool caseSensitive) { FileExplorerResponse SearchResponse = new FileExplorerResponse(); try { string physicalPath = GetPath(path); FileAccessRules RootPermission = GetPathPermission(path); if (!RootPermission.Read) { throw new ArgumentException("'" + path + "' is not accessible. Access is denied."); } SearchResponse = FileExplorerOperations.Search(path, filter, searchString, caseSensitive); var items = SearchResponse.files.ToArray(); for (int i = 0; i < items.Length; i++) { FileAccessRules PathPermission = GetPathPermission(path + items[i].filterPath.Replace("\\", "/")); if (!PathPermission.Read) { items = items.Where((val, idx) => idx != i).ToArray(); i--; continue; } items[i].permission = GetFilePermission(physicalPath + items[i].filterPath, items[i].name, items[i].isFile); if (items[i].isFile) { items[i].permission.EditContents = PathPermission.EditContents; items[i].permission.Upload = PathPermission.Upload; } } SearchResponse.files = items; return(SearchResponse); } catch (Exception e) { SearchResponse.error = e.GetType().FullName + ", " + e.Message; return(SearchResponse); } }
public FileExplorerResponse GetDetails(string path, string[] names) { FileExplorerResponse DetailsResponse = new FileExplorerResponse(); try { DetailsResponse = FileExplorerOperations.GetDetails(path, names); string physicalPath = GetPath(path); var items = DetailsResponse.details.ToArray(); for (int i = 0; i < items.Length; i++) { items[i].Permission = GetFilePermission(physicalPath, items[i].Name, items[i].Type != "File Folder"); } DetailsResponse.details = items; return(DetailsResponse); } catch (Exception e) { DetailsResponse.error = e.GetType().FullName + ", " + e.Message; return(DetailsResponse); } }
public static FileExplorerResponse Paste(string sourceDir, string backupDir, string[] fNames, string option, IEnumerable <CommonFileDetails> commonFiles) { FileExplorerResponse PasteResponse = new FileExplorerResponse(); try { if (commonFiles != null) { foreach (var file in commonFiles) { file.Path = ToPhysicalPath(ToAbsolute(file.Path)); } } string[] copiedFiles = PasteOperataion(sourceDir, backupDir, fNames, option, commonFiles); PasteResponse.files = GetAllFileDetails(backupDir, copiedFiles); return(PasteResponse); } catch (Exception e) { PasteResponse.error = e.GetType().FullName + ", " + e.Message; return(PasteResponse); } }