Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
        }