/// <summary> /// 列出文件的具体实现 /// </summary> /// <param name="input"></param> /// <returns></returns> public virtual async Task <ListOutput> ListCoreAsync(ListInput input) { //要列出的绝对路径 var absolutePath = Path.Combine($"{ServiceConfig.WebRootPath}\\", $"{input.ListPath}"); if (!Directory.Exists(absolutePath)) { return(new ListOutput() { State = "目录不存在" }); } var allFiles = new string[10]; //根据允许列出的文件类型列表过滤 var files = Directory.GetFiles(absolutePath, "*.*", SearchOption.AllDirectories) .Where(p => input.AllowFileExtensions.Contains(Path.GetExtension(p))) .Select(p => Path.GetRelativePath(ServiceConfig.WebRootPath, p)).ToList(); //分页 var pagedList = files.Count > input.Start + input.Size ? files.GetRange(input.Start, input.Size) : files.GetRange(input.Start, files.Count - input.Start); return(await Task.FromResult(new ListOutput() { Size = input.Size , Total = files.Count , Start = input.Start , List = pagedList.Select(p => new ListItemOutput() { Url = p.Replace("\\", "/"), Original = Path.GetFileName(p) }).ToList() , State = "SUCCESS" })); }
/// <summary> /// 封装列出文件需要的参数 /// </summary> /// <returns></returns> public virtual async Task <ListInput> GetInputParamAsync() { var input = new ListInput() { Start = Convert.ToInt32(Context.Request.Query["start"]), Size = Convert.ToInt32(Context.Request.Query["size"]) }; switch (Action) { case "listimage": input.ListPath = UEditorConfig.ImageManagerListPath; input.AllowFileExtensions = UEditorConfig.ImageManagerAllowFiles; break; case "listfile": input.ListPath = UEditorConfig.FileManagerListPath; input.AllowFileExtensions = UEditorConfig.FileManagerAllowFiles; break; } //处理列出目录的路径,移除路径前的“/”以免造成后续路径拼接出错 if (input.ListPath.StartsWith("/")) { input.ListPath = input.ListPath.Substring(1, input.ListPath.Length - 1); } return(await Task.FromResult(input)); }