Beispiel #1
0
 private bool IsImage(SystemFilesView model)
 {
     return(AppConfig.ImageExtension.Contains(model.FileExtension.ToLower()));
 }
Beispiel #2
0
        public IHttpActionResult UploadFile([FromUri] SystemFilesView model)
        {
            var result = new FileResult();

            try
            {
                SystemFiles systemFiles = new SystemFiles();

                var FolderName = ConfigurationManager.AppSettings[model.ProjectName];

                if (FolderName == null)
                {
                    FolderName = model.ProjectName;
                }

                var day        = DateTime.Now.ToString("yyyyMMdd");
                var folder     = FolderName + "/" + day;
                var filePath   = AppConfig.FileUploadRootDirectory + "/" + folder;
                var dataLength = 0L;

                if (Directory.Exists(filePath) == false)// 如果不存在就创建file文件夹
                {
                    Directory.CreateDirectory(filePath);
                }
                string longName     = Guid.NewGuid().ToString();
                string SaveFileName = longName + model.FileExtension; // 保存文件名称

                using (var destinationStream = File.Create(filePath + "/" + SaveFileName))
                    using (var sourceStream = Request.Content.ReadAsStreamAsync().Result)
                    {
                        // TODO:添加一个BufferStream缓冲,减少I/O压力
                        sourceStream.CopyTo(destinationStream);

                        dataLength = sourceStream.Length;
                    }

                var tobeArchiveDateTime = (model.ArchivePeriod == EnumArchivePeriod.Never || IsImage(model)) ? DateTime.MaxValue : DateTime.Now.AddDays((int)model.ArchivePeriod);

                systemFiles = new SystemFiles()
                {
                    FileId              = Guid.NewGuid(),
                    FileData            = null,
                    FilePath            = folder + "/" + SaveFileName,
                    FileExtension       = model.FileExtension,
                    FileName            = model.FileName,
                    FileLongName        = SaveFileName,
                    FileSize            = (int)dataLength,
                    ProjectName         = model.ProjectName,
                    CreateDate          = DateTime.Now,
                    FileCompressStatus  = EnumFileCompressStatus.Uncompressed,
                    TobeArchiveDateTime = tobeArchiveDateTime
                };

                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    dbContext.SystemFiles.Add(systemFiles);
                    dbContext.SaveChanges();
                }

                result.Status  = AppConfig.ReturnResult.Status_Success;
                result.Message = AppConfig.ReturnResult.Message_Success;
                result.Result  = JsonConvert.SerializeObject(systemFiles);

                return(Json(result));
            }
            catch (Exception ex)
            {
                result.Status  = AppConfig.ReturnResult.Status_Failure;
                result.Message = ex.Message;

                return(Json(result));
            }
        }