private void RemoveThumbs(FullPath path) { if (path.Directory != null) { string thumbPath = path.Root.GetExistingThumbPath(path.Directory); if (thumbPath != null) Directory.Delete(thumbPath, true); } else { string thumbPath = path.Root.GetExistingThumbPath(path.File); if (thumbPath != null) File.Delete(thumbPath); } }
internal ImageWithMime GenerateThumbnail(FullPath originalImage) { string name = originalImage.File.Name; for (int i = name.Length - 1; i >= 0; i--) { if (name[i] == '_') { name = name.Substring(0, i); break; } } string fullPath = originalImage.File.DirectoryName + "\\" + name + originalImage.File.Extension; if (_thumbnailsDirectory != null) { FileInfo thumbPath; if (originalImage.File.FullName.StartsWith(_thumbnailsDirectory.FullName)) thumbPath = originalImage.File; else thumbPath = new FileInfo(Path.Combine(_thumbnailsDirectory.FullName, originalImage.RelativePath)); if (!thumbPath.Exists) { if (!thumbPath.Directory.Exists) System.IO.Directory.CreateDirectory(thumbPath.Directory.FullName); using (FileStream thumbFile = thumbPath.Create()) { using (FileStream original = File.OpenRead(fullPath)) { ImageWithMime thumb = PicturesEditor.GenerateThumbnail(original, _thumbnailsSize, true); thumb.ImageStream.CopyTo(thumbFile); thumb.ImageStream.Position = 0; return thumb; } } } else { return new ImageWithMime(PicturesEditor.ConvertThumbnailExtension(thumbPath.Extension), thumbPath.OpenRead()); } } else { using (FileStream original = File.OpenRead(fullPath)) { return PicturesEditor.GenerateThumbnail(original, _thumbnailsSize, true); } } }
JsonResult IDriver.Init(string target) { FullPath fullPath; if (string.IsNullOrEmpty(target)) { Root root = _roots.FirstOrDefault(r => r.StartPath != null); if (root == null) root = _roots.First(); fullPath = new FullPath(root, root.StartPath??root.Directory); } else { fullPath = ParsePath(target); } InitResponse answer = new InitResponse(DTOBase.Create(fullPath.Directory, fullPath.Root), new Options(fullPath)); foreach (FileInfo item in fullPath.Directory.GetFiles()) { if ((item.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) answer.Files.Add(DTOBase.Create(item, fullPath.Root)); } foreach (DirectoryInfo item in fullPath.Directory.GetDirectories()) { if ((item.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) answer.Files.Add(DTOBase.Create(item, fullPath.Root)); } foreach (Root item in _roots) { answer.Files.Add(DTOBase.Create(item.Directory, item)); } if (fullPath.Root.Directory.FullName != fullPath.Directory.FullName) { foreach (DirectoryInfo item in fullPath.Root.Directory.GetDirectories()) { if ((item.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) answer.Files.Add(DTOBase.Create(item, fullPath.Root)); } } if(fullPath.Root.MaxUploadSize.HasValue) { answer.UploadMaxSize = fullPath.Root.MaxUploadSizeInKb.Value + "K"; } return Json(answer); }
public FileSystemInfo GetFileByHash(string hash) { FullPath path = _driver.ParsePath(hash); return(path.Directory == null ? (FileSystemInfo)path.File : (FileSystemInfo)path.Directory); }
JsonResult IDriver.Upload(string target, System.Web.HttpFileCollectionBase targets) { FullPath dest = ParsePath(target); var response = new AddResponse(); if (dest.Root.MaxUploadSize.HasValue) { for (int i = 0; i < targets.AllKeys.Length; i++) { HttpPostedFileBase file = targets[i]; if (file.ContentLength > dest.Root.MaxUploadSize.Value) { return(Error.MaxUploadFileSize()); } } } for (int i = 0; i < targets.AllKeys.Length; i++) { HttpPostedFileBase file = targets[i]; string path = Path.Combine(dest.Directory.FullName, file.FileName); if (File.Exists(path)) { if (dest.Root.UploadOverwrite) { //if file already exist we rename the current file, //and if upload is succesfully delete temp file, in otherwise we restore old file string tmpPath = path + Guid.NewGuid(); bool uploaded = false; try { File.Move(path, tmpPath); file.SaveAs(path); uploaded = true; } catch { } finally { if (uploaded) { File.Delete(tmpPath); } else { if (File.Exists(path)) { File.Delete(path); } File.Move(tmpPath, path); } } } else { string name = null; for (int j = 1; j < 100; j++) { string suggestName = Path.GetFileNameWithoutExtension(file.FileName) + "-" + j + Path.GetExtension(file.FileName); if (!File.Exists(Path.Combine(dest.Directory.FullName, suggestName))) { name = suggestName; break; } } if (name == null) { name = Path.GetFileNameWithoutExtension(file.FileName) + "-" + Guid.NewGuid() + Path.GetExtension(file.FileName); } path = Path.Combine(dest.Directory.FullName, name); file.SaveAs(path); } } else { file.SaveAs(path); } response.Added.Add((FileDTO)DTOBase.Create(new FileInfo(path), dest.Root)); } return(Json(response)); }
public JsonResult Upload(string target, HttpFileCollectionBase targets, bool addWithNewIndex) { FullPath dest = ParsePath(target); var response = new AddResponse(); if (dest.Root.MaxUploadSize.HasValue) { for (int i = 0; i < targets.AllKeys.Length; i++) { HttpPostedFileBase file = targets[i]; if (file.ContentLength > dest.Root.MaxUploadSize.Value) { return(Error.MaxUploadFileSize()); } } } for (int i = 0; i < targets.AllKeys.Length; i++) { HttpPostedFileBase file = targets[i]; FileInfo path = new FileInfo(Path.Combine(dest.Directory.FullName, Path.GetFileName(file.FileName))); if (path.Exists) { if (dest.Root.UploadOverwrite) { //if file already exist we rename the current file, //and if upload is succesfully delete temp file, in otherwise we restore old file string tmpPath = path.FullName + Guid.NewGuid(); bool uploaded = false; try { file.SaveAs(tmpPath); uploaded = true; } catch { } finally { if (uploaded) { File.Delete(path.FullName); File.Move(tmpPath, path.FullName); } else { File.Delete(tmpPath); } } } else { file.SaveAs(Path.Combine(path.DirectoryName, Helper.GetDuplicatedName(path))); } } else { file.SaveAs(path.FullName); } response.Added.Add((FileDTO)DTOBase.Create(new FileInfo(path.FullName), dest.Root)); } return(Json(response)); }
/// <summary> </summary> JsonResult IDriver.Init(string target, Hashtable posting_json_obj) { Root root; DirectoryInfo dir; if (string.IsNullOrEmpty(target)) { root = _roots.First(); dir = root.Directory; } else { FullPath fullPath = ParsePath(target); root = fullPath.Root; dir = fullPath.Directory; } InitResponse answer = new InitResponse(DTOBase.Create(dir, root)); foreach (var item in dir.GetFiles()) { if (HttpContext.Current.Request.Params.AllKeys.Contains("mimes[]")) { if (file_mime.mime_type(item.Extension.Trim('.')).IndexOf(HttpContext.Current.Request.Params["mimes[]"]) > -1) { answer.AddResponse(DTOBase.Create(item, root, posting_json_obj)); } } else { answer.AddResponse(DTOBase.Create(item, root, posting_json_obj)); } } foreach (var item in dir.GetDirectories()) { answer.AddResponse(DTOBase.Create(item, root)); } foreach (var item in _roots) { answer.AddResponse(DTOBase.Create(item.Directory, item)); } foreach (var item in root.Directory.GetDirectories()) { answer.AddResponse(DTOBase.Create(item, root)); } //if (dir.FullName != root.Directory.FullName) //{ // foreach (var item in root.Directory.GetDirectories()) // { // if (item.FullName == root.Directory.FullName) // { // foreach (var rootSubDir in item.GetDirectories()) // { // if (rootSubDir.FullName != dir.FullName) // { // answer.AddResponse(DTOBase.Create(rootSubDir, item)); // } // } // } // } //} string parentPath = string.IsNullOrEmpty(target) ? root.Alias : root.Alias + dir.FullName.Substring(root.Directory.FullName.Length).Replace('\\', '/'); answer.options.path = parentPath; answer.options.url = root.Url; answer.options.tmbUrl = root.TmbUrl; return(Json(answer)); }