public UploadFileResult UploadFile(HttpRequestBase request) { if (request == null) { throw new ArgumentNullException("request"); } var result = new UploadFileResult(); if (request.Files.Count < 1 || request.Files[0].ContentLength == 0) { result.Succeeded = false; result.Message = "<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>"; result.Message = Resources.Interface.NoFileSelected; } try { var postedFile = request.Files[0]; System.IO.Stream fileStream = postedFile.InputStream; byte[] fileData = new byte[postedFile.ContentLength]; fileStream.Read(fileData, 0, postedFile.ContentLength); var args = new SaveFileArguments { FileData = fileData, FileName = postedFile.FileName }; if (this._fileManager.IsFileAllowed(postedFile.FileName)) { var file = this._fileManager.Save(args); this._dataSource.SaveChanges(); var path = file.Folder; string filePath = string.Format("/{0}/{1}/{2}.{3}", path, file.Path.Replace("\\", "/"), file.FileName, file.Extension); result.Succeeded = true; result.Message = string.Format("<script type=\"text/javascript\">var result = {{ url: \"{0}\", name: \"{1}\" }};</script>", filePath, file.OriginalName); result.DocumentType = this._fileManager.GetDocumentType(file.Extension); result.Extension = file.Extension; return(result); } else { result.Succeeded = false; result.Message = "<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>"; result.Message = Resources.Interface.FileTypeNotAllowed; } } catch (Exception) { result.Succeeded = false; result.Message = string.Format("<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>", Resources.Interface.ErrorUploadingFile); } return(result); }
public IList <File> SaveMany(SaveFileArguments arguments) { if (arguments == null) { throw new ArgumentNullException("arguments"); } if (arguments.FileData == null) { Logger.Log("No fileData passed to FileRepository.SaveFiles", LogLevel.Error); return(null); } if (arguments.FileData.Length == 0) { return(null); } IList <File> files = new List <File>(); try { using (var memoryStream = new System.IO.MemoryStream(arguments.FileData)) { var archive = new ZipArchive(memoryStream); foreach (var entry in archive.Entries) { if (entry.Name.Length > 0) { byte[] data = new byte[entry.Length]; System.IO.Stream stream = entry.Open(); stream.Read(data, 0, (int)entry.Length); File file = this.Save(new SaveFileArguments { FileName = entry.Name, FileData = data, MaxX = arguments.MaxX, MaxY = arguments.MaxY, CustomX = arguments.CustomX, CustomY = arguments.CustomY }); files.Add(file); } } } } catch (Exception ex) { foreach (File file in files) { string directory = System.IO.Path.Combine(StrixPlatform.Environment.MapPath(_uploadFolder), file.Path); this._dataSource.FileSystemWrapper.DeleteFile(string.Format("{0}.{1}", Path.Combine(directory, file.FileName), file.Extension)); } this._dataSource.FileSystemWrapper.ProcessDeleteQueue(); Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } return(files); }
public IList <UploadFileResult> UploadFiles(AddFile model, HttpRequestBase request) { if (model == null) { throw new ArgumentNullException("model"); } if (request == null) { throw new ArgumentNullException("request"); } var result = new List <UploadFileResult>(); var allowed = true; // first validate them all foreach (string fileName in request.Files) { var file = request.Files[fileName]; // Todo: test for zip. if (!this._fileManager.IsFileAllowed(file.FileName, model.Unzip ? new string[] { "zip" } : null)) { allowed = false; break; } } if (allowed) { // then save them try { foreach (string fileName in request.Files) { var file = request.Files[fileName]; System.IO.Stream fileStream = file.InputStream; byte[] fileData = new byte[file.ContentLength]; fileStream.Read(fileData, 0, file.ContentLength); var args = new SaveFileArguments { FileData = fileData, CustomX = model.CustomWidth, CustomY = model.CustomHeight, MaxX = model.MaxWidth, MaxY = model.MaxHeight }; if (model.Unzip && file.FileName.ToLower().EndsWith(".zip")) { var files = this._fileManager.SaveMany(args); foreach (var theFile in files) { result.Add(this.GetUploadResult(theFile, model)); } } else { args.FileName = file.FileName; var theFile = this._fileManager.Save(args); result.Add(this.GetUploadResult(theFile, model)); } } this._dataSource.SaveChanges(); } catch (Exception ex) { Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } } return(result); }
public File Save(SaveFileArguments arguments) { if (arguments == null) { throw new ArgumentNullException("arguments"); } if (arguments.FileData == null) { Logger.Log("No fileData passed to FileRepository.SaveFile", LogLevel.Error); return(null); } if (this.IsFileAllowed(arguments.FileName, new string[] { "zip" }) && arguments.FileData.Length > 0) { string extension = System.IO.Path.GetExtension(arguments.FileName).Replace(".", string.Empty); var isInMainGroup = StrixPlatform.User.IsInMainGroup; File newFile = new File(); newFile.Path = !isInMainGroup || StrixCms.Config.Files.SecureFiles ? string.Format("{0}\\", CmsConstants.SECURE) : null; if (!isInMainGroup) { newFile.Path = newFile.Path + StrixPlatform.User.GroupName; } newFile.Id = Guid.NewGuid(); newFile.OriginalName = arguments.FileName; newFile.FileName = newFile.Id.ToString(); newFile.Path = newFile.Path + CurrentStorageYearMonth.Replace("/", "\\"); newFile.Extension = extension; newFile.Size = arguments.FileData.LongLength; File createdFile = null; string uploadDirectory = StrixPlatform.Environment.MapPath(_uploadFolder); if (!Directory.Exists(uploadDirectory)) { Directory.CreateDirectory(uploadDirectory); } string directory = System.IO.Path.Combine(uploadDirectory, newFile.Path); try { var path = string.Format("{0}.{1}", Path.Combine(directory, newFile.FileName), newFile.Extension); this._dataSource.FileSystemWrapper.SaveFile(path, arguments.FileData); if (this.IsImage(newFile.Extension)) { if (arguments.MaxX.HasValue && arguments.MaxX.Value > 0 && arguments.MaxY.HasValue && arguments.MaxY.Value > 0) { this._imageConverter.Resize(path, arguments.MaxX.Value, arguments.MaxY.Value, true); } if (arguments.CustomX.HasValue && arguments.CustomX.Value > 0 && arguments.CustomY.HasValue && arguments.CustomY.Value > 0) { this._imageConverter.Resize(path, arguments.CustomX.Value, arguments.CustomY.Value, false, false); } } createdFile = this.CreateFile(newFile); } catch (Exception ex) { this._dataSource.FileSystemWrapper.DeleteFile(string.Format("{0}.{1}", Path.Combine(directory, newFile.FileName), newFile.Extension)); this._dataSource.FileSystemWrapper.ProcessDeleteQueue(); Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } return(createdFile); } return(null); }
public IList<File> SaveMany(SaveFileArguments arguments) { if (arguments == null) { throw new ArgumentNullException("arguments"); } if (arguments.FileData == null) { Logger.Log("No fileData passed to FileRepository.SaveFiles", LogLevel.Error); return null; } if (arguments.FileData.Length == 0) { return null; } IList<File> files = new List<File>(); try { using (var memoryStream = new System.IO.MemoryStream(arguments.FileData)) { var archive = new ZipArchive(memoryStream); foreach (var entry in archive.Entries) { if (entry.Name.Length > 0) { byte[] data = new byte[entry.Length]; System.IO.Stream stream = entry.Open(); stream.Read(data, 0, (int)entry.Length); File file = this.Save(new SaveFileArguments { FileName = entry.Name, FileData = data, MaxX = arguments.MaxX, MaxY = arguments.MaxY, CustomX = arguments.CustomX, CustomY = arguments.CustomY }); files.Add(file); } } } } catch (Exception ex) { foreach (File file in files) { string directory = System.IO.Path.Combine(StrixPlatform.Environment.MapPath(_uploadFolder), file.Path); this._dataSource.FileSystemWrapper.DeleteFile(string.Format("{0}.{1}", Path.Combine(directory, file.FileName), file.Extension)); } this._dataSource.FileSystemWrapper.ProcessDeleteQueue(); Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } return files; }
public File Save(SaveFileArguments arguments) { if (arguments == null) { throw new ArgumentNullException("arguments"); } if (arguments.FileData == null) { Logger.Log("No fileData passed to FileRepository.SaveFile", LogLevel.Error); return null; } if (this.IsFileAllowed(arguments.FileName, new string[] { "zip" }) && arguments.FileData.Length > 0) { string extension = System.IO.Path.GetExtension(arguments.FileName).Replace(".", string.Empty); var isInMainGroup = StrixPlatform.User.IsInMainGroup; File newFile = new File(); newFile.Path = !isInMainGroup || StrixCms.Config.Files.SecureFiles ? string.Format("{0}\\", CmsConstants.SECURE) : null; if (!isInMainGroup) { newFile.Path = newFile.Path + StrixPlatform.User.GroupName; } newFile.Id = Guid.NewGuid(); newFile.OriginalName = arguments.FileName; newFile.FileName = newFile.Id.ToString(); newFile.Path = newFile.Path + CurrentStorageYearMonth.Replace("/", "\\"); newFile.Extension = extension; newFile.Size = arguments.FileData.LongLength; File createdFile = null; string uploadDirectory = StrixPlatform.Environment.MapPath(_uploadFolder); if (!Directory.Exists(uploadDirectory)) { Directory.CreateDirectory(uploadDirectory); } string directory = System.IO.Path.Combine(uploadDirectory, newFile.Path); try { var path = string.Format("{0}.{1}", Path.Combine(directory, newFile.FileName), newFile.Extension); this._dataSource.FileSystemWrapper.SaveFile(path, arguments.FileData); if (this.IsImage(newFile.Extension)) { if (arguments.MaxX.HasValue && arguments.MaxX.Value > 0 && arguments.MaxY.HasValue && arguments.MaxY.Value > 0) { this._imageConverter.Resize(path, arguments.MaxX.Value, arguments.MaxY.Value, true); } if (arguments.CustomX.HasValue && arguments.CustomX.Value > 0 && arguments.CustomY.HasValue && arguments.CustomY.Value > 0) { this._imageConverter.Resize(path, arguments.CustomX.Value, arguments.CustomY.Value, false, false); } } createdFile = this.CreateFile(newFile); } catch (Exception ex) { this._dataSource.FileSystemWrapper.DeleteFile(string.Format("{0}.{1}", Path.Combine(directory, newFile.FileName), newFile.Extension)); this._dataSource.FileSystemWrapper.ProcessDeleteQueue(); Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } return createdFile; } return null; }
public UploadFileResult UploadFile(HttpRequestBase request) { if (request == null) { throw new ArgumentNullException("request"); } var result = new UploadFileResult(); if (request.Files.Count < 1 || request.Files[0].ContentLength == 0) { result.Succeeded = false; result.Message = "<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>"; result.Message = Resources.Interface.NoFileSelected; } try { var postedFile = request.Files[0]; System.IO.Stream fileStream = postedFile.InputStream; byte[] fileData = new byte[postedFile.ContentLength]; fileStream.Read(fileData, 0, postedFile.ContentLength); var args = new SaveFileArguments { FileData = fileData, FileName = postedFile.FileName }; if (this._fileManager.IsFileAllowed(postedFile.FileName)) { var file = this._fileManager.Save(args); this._dataSource.SaveChanges(); var path = file.Folder; string filePath = string.Format("/{0}/{1}/{2}.{3}", path, file.Path.Replace("\\", "/"), file.FileName, file.Extension); result.Succeeded = true; result.Message = string.Format("<script type=\"text/javascript\">var result = {{ url: \"{0}\", name: \"{1}\" }};</script>", filePath, file.OriginalName); result.DocumentType = this._fileManager.GetDocumentType(file.Extension); result.Extension = file.Extension; return result; } else { result.Succeeded = false; result.Message = "<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>"; result.Message = Resources.Interface.FileTypeNotAllowed; } } catch (Exception) { result.Succeeded = false; result.Message = string.Format("<script type=\"text/javascript\">var result = {{ error: \"{0}\" }};</script>", Resources.Interface.ErrorUploadingFile); } return result; }
public IList<UploadFileResult> UploadFiles(AddFile model, HttpRequestBase request) { if (model == null) { throw new ArgumentNullException("model"); } if (request == null) { throw new ArgumentNullException("request"); } var result = new List<UploadFileResult>(); var allowed = true; // first validate them all foreach (string fileName in request.Files) { var file = request.Files[fileName]; // Todo: test for zip. if (!this._fileManager.IsFileAllowed(file.FileName, model.Unzip ? new string[] { "zip" } : null)) { allowed = false; break; } } if (allowed) { // then save them try { foreach (string fileName in request.Files) { var file = request.Files[fileName]; System.IO.Stream fileStream = file.InputStream; byte[] fileData = new byte[file.ContentLength]; fileStream.Read(fileData, 0, file.ContentLength); var args = new SaveFileArguments { FileData = fileData, CustomX = model.CustomWidth, CustomY = model.CustomHeight, MaxX = model.MaxWidth, MaxY = model.MaxHeight }; if (model.Unzip && file.FileName.ToLower().EndsWith(".zip")) { var files = this._fileManager.SaveMany(args); foreach (var theFile in files) { result.Add(this.GetUploadResult(theFile, model)); } } else { args.FileName = file.FileName; var theFile = this._fileManager.Save(args); result.Add(this.GetUploadResult(theFile, model)); } } this._dataSource.SaveChanges(); } catch (Exception ex) { Logger.Log(ex.Message, ex, LogLevel.Fatal); throw; } } return result; }