private bool IsImage(SystemFilesView model) { return(AppConfig.ImageExtension.Contains(model.FileExtension.ToLower())); }
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)); } }