public FileStorageViewModel UploadFile(int memberId, string fileName, string contentType, int size, int?fileImageHeight = null, int?fileImageWidth = null) { var fileInfo = new FileStorageViewModel(); var fileGuidName = Guid.NewGuid(); var fileEntity = new Infrastructure.Entity.FileStorage() { Name = HttpUtility.UrlDecode(fileName), // Name =file.FileName, FileGuid = fileGuidName, FileSize = size, FileContentType = contentType, Creator = memberId, CreateUtcDate = DateTime.UtcNow, FileUrl = string.Format("{0}api/file/{1}", loginServer, fileGuidName.ToString("N")) }; if (contentType.Contains("image")) { fileEntity.FileImageHeight = fileImageHeight; fileEntity.FileImageWidth = fileImageWidth; } // Db File fileInfo = Create(fileEntity); _uow.SaveChanges(); return(fileInfo); }
/// <summary> /// 新增資訊 /// </summary> /// <param name="fileEntity">檔案實體</param> /// <returns></returns> private FileStorageViewModel Create(FileStorage fileEntity) { var db = _uow.DbContext; if (GetFileInfoByFileGuidName(fileEntity.FileGuid) == null) { db.FileStorage.Add(fileEntity); var respponseData = new FileStorageViewModel() { CreateUtcDate = fileEntity.CreateUtcDate, Creator = fileEntity.Creator, FileContentType = fileEntity.FileContentType, Deleter = fileEntity.Deleter, DeleteUtcDate = fileEntity.DeleteUtcDate, FileGuid = fileEntity.FileGuid, FileImageHeight = fileEntity.FileImageHeight, FileImageUrl = fileEntity.FileContentType.ToLower().Contains("image") ? string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, fileEntity.FileGuid.ToString("N"), maxImgWidth, maxImgHeight) : null, FileImageWidth = fileEntity.FileImageWidth, FileSize = fileEntity.FileSize, FileUrl = fileEntity.FileUrl, Name = fileEntity.Name }; return(respponseData); } else { return(null); } }
public IActionResult Post(string folderName, string parentfolderName, string filePath) { try { //DirectoryInfo di = Directory.CreateDirectory(@"filePath"); var model = new FileStorageViewModel() { FolderName = folderName, ParentFolderName = parentfolderName, FilePath = filePath, FileCreationDate = DateTime.UtcNow }; if (model != null) { var newFolder = _mapper.Map <FileStorageViewModel, FileStoreage>(model); var outPut = _fileStorageRepository.Create(newFolder).Result; return(Created($"/api/Folder/{outPut.Id}", _mapper.Map <FileStoreage, FileStorageViewModel>(outPut))); } } catch (Exception ex) { _logger.LogError($"Failed to create a new Folder: {ex}"); } return(BadRequest("Failed to create a new Folder")); }
public HttpResponseMessage Upload(int id) { // GRABBING THE FILE FROM THE HTTP REQUEST & ASSIGNING GUID TO SERVERFILENAME var httpRequest = HttpContext.Current.Request; if (httpRequest.Files.Count > 0) { try { var postedFile = httpRequest.Files[0]; var postedFileName = postedFile.FileName; var serverFileName = Path.GetFileNameWithoutExtension(postedFileName) + "." + Guid.NewGuid() + Path.GetExtension(postedFileName); // AWS Upload TransferUtilityUploadRequest request = new TransferUtilityUploadRequest { BucketName = awsBucketName, Key = serverFileName, InputStream = postedFile.InputStream }; fileTransferUtility.Upload(request); // CREATING MODEL TO SEND TO SERVICE TO SAVE FILE DATA TO SQL FileStorageAddRequest newFile = new FileStorageAddRequest { UserFileName = postedFileName, BasePath = "C64/goodneighbor/", SystemFileName = serverFileName, IncidentId = id, ModifiedBy = "Your Neighbor" }; int newFileId = _fileStorageService.Create(newFile); FileStorageViewModel newFileUpload = _fileStorageService.SelectById(newFileId); ItemResponse <FileStorageViewModel> resp = new ItemResponse <FileStorageViewModel>(); resp.Item = newFileUpload; return(Request.CreateResponse(HttpStatusCode.Created, resp)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, ex)); } } else { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Upload Failed - Check the file being uploaded.")); } }
/// <summary> /// 取得特定的FileStorage資料 /// </summary> /// <param name="fileGuid"></param> /// <returns></returns> public FileStorageViewModel GetFileInfoByFileGuidName(Guid fileGuid) { var db = _uow.DbContext; var fileInfo = (from fs in db.FileStorage where fs.FileGuid == fileGuid select fs).FirstOrDefault(); if (fileInfo != null) { var imgFile_g = fileGuid.ToString("N"); var responseData = new FileStorageViewModel() { CreateUtcDate = fileInfo.CreateUtcDate, Creator = fileInfo.Creator, FileContentType = fileInfo.FileContentType, Deleter = fileInfo.Deleter, DeleteUtcDate = fileInfo.DeleteUtcDate, FileGuid = fileInfo.FileGuid, FileImageHeight = fileInfo.FileImageHeight, FileImageUrl = fileInfo.FileContentType.ToLower().Contains("image") ? string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, fileInfo.FileGuid.ToString("N"), maxImgWidth, maxImgHeight) : null, FileImageWidth = fileInfo.FileImageWidth, FileSize = fileInfo.FileSize, FileUrl = fileInfo.FileUrl, Name = fileInfo.Name }; responseData.FileImageUrl = fileInfo.FileContentType.ToLower().Contains("image") ? string.Format("{0}api/imgFile/{1}", loginServer, imgFile_g, maxImgWidth, maxImgHeight) : null; return(responseData); } else { return(null); } }
public FileStorageViewModel SelectById(int Id) { FileStorageDomain rawData = new FileStorageDomain(); _dataProvider.ExecuteCmd( "file_storage_select_by_id", inputParamMapper : delegate(SqlParameterCollection paramCol) { paramCol.AddWithValue("@Id", Id); }, singleRecordMapper : delegate(IDataReader reader, short set) { int idx = 0; rawData.Id = reader.GetSafeInt32(idx++); rawData.UserFileName = reader.GetSafeString(idx++); rawData.BasePath = reader.GetSafeString(idx++); rawData.SystemFileName = reader.GetSafeString(idx++); rawData.IncidentId = reader.GetSafeInt32(idx++); rawData.CreatedDate = reader.GetSafeDateTime(idx++); rawData.ModifiedDate = reader.GetSafeDateTime(idx++); rawData.ModifiedBy = reader.GetSafeString(idx++); } ); FileStorageViewModel viewModelResp = new FileStorageViewModel { Id = rawData.Id, UserFileName = rawData.UserFileName, Url = "https://sabio-training.s3.us-west-2.amazonaws.com/" + rawData.BasePath + rawData.SystemFileName, IncidentId = rawData.IncidentId, ModifiedDate = rawData.ModifiedDate, ModifiedBy = rawData.ModifiedBy }; return(viewModelResp); }
/// <summary> /// 上傳檔案 /// </summary> /// <param name="memberId"></param> /// <param name="files"></param> /// <returns></returns> public List <FileStorageViewModel> UploadFile(int memberId, HttpFileCollection files) { var fileList = new List <FileStorageViewModel>(); //預設存檔位置 var drivePath = WebConfigurationManager.AppSettings["DrivePath"]; //存檔server var fileServer = WebConfigurationManager.AppSettings["loginServer"]; //確認實體檔案資料夾是否存在 if (!Directory.Exists(drivePath)) { //建一個新的資料夾 Directory.CreateDirectory(drivePath); } //開始上傳檔案 for (int i = 0; i < files.Count; i++) { var fileInfo = new FileStorageViewModel(); HttpPostedFile file = files[i]; int?fileImageWidth = null; int?fileImageHeight = null; var fileGuidName = Guid.NewGuid(); var resourcePath = Path.Combine(drivePath, fileGuidName.ToString("N")); // Physical File file.SaveAs(resourcePath); var fileEntity = new Infrastructure.Entity.FileStorage() { Name = HttpUtility.UrlDecode(file.FileName), FileGuid = fileGuidName, FileSize = file.ContentLength, //Byte FileContentType = file.ContentType, Creator = memberId, CreateUtcDate = DateTime.UtcNow, FileUrl = string.Format("{0}api/file/{1}", fileServer, fileGuidName.ToString("N")), // FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", fileServer, fileGuidName.ToString("N"), maxImgWidth, maxImgHeight), FileImageHeight = fileImageHeight, FileImageWidth = fileImageWidth }; if (file.ContentType.Contains("image")) { var imgPath = Path.Combine(drivePath, string.Format("{0}_w{1}_h{2}", fileGuidName.ToString("N"), maxImgWidth, maxImgHeight)); System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream); //實體圖片寬高 fileImageWidth = image.Width; fileImageHeight = image.Width; //建立一個縮圖 ImageResize(resourcePath, maxImgWidth, maxImgHeight, imgPath, file.ContentType); } // Db File fileInfo = Create(fileEntity); fileList.Add(fileInfo); } var db = _uow.DbContext; db.SaveChanges(); return(fileList); }
/// <summary> /// 透過mutipart Form Data傳檔案進來 /// </summary> /// <param name="memberId"></param> /// <param name="files"></param> /// <returns></returns> public List <FileStorageViewModel> UploadFiles(int memberId, List <FileStorage> files, Stream[] physicalStreams) { var fileList = new List <FileStorageViewModel>(); //預設存檔位置 var drivePath = WebConfigurationManager.AppSettings["DrivePath"]; //存檔server var fileServer = WebConfigurationManager.AppSettings["loginServer"]; //確認實體檔案資料夾是否存在 /* if (!Directory.Exists(drivePath)) * //建一個新的資料夾 * Directory.CreateDirectory(drivePath);*/ var streamIndex = 0; foreach (var file in files) { var fileStream = physicalStreams[streamIndex]; var responseFileData = new FileStorageViewModel(); int?fileImageWidth = null; int?fileImageHeight = null; // var fileGuidName = Guid.NewGuid(); var resourcePath = Path.Combine(drivePath, file.FileGuid.ToString("N")); if (file.FileContentType.Contains("image")) { var imgPath = Path.Combine(drivePath, string.Format("{0}_w{1}_h{2}", file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight)); var image = Image.FromStream(fileStream); //實體圖片寬高 fileImageWidth = image.Width; fileImageHeight = image.Width; //建立一個縮圖 ImageResize(resourcePath, maxImgWidth, maxImgHeight, imgPath, file.FileContentType); responseFileData.FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", fileServer, file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight); responseFileData.FileImageHeight = fileImageHeight; responseFileData.FileImageWidth = fileImageWidth; file.FileImageHeight = fileImageHeight; file.FileImageWidth = fileImageWidth; } file.Name = HttpUtility.UrlDecode(file.Name); // file.FileGuid = fileGuidName; file.Creator = memberId; file.CreateUtcDate = DateTime.UtcNow; file.FileUrl = string.Format("{0}api/file/{1}", fileServer, file.FileGuid.ToString("N")); responseFileData.FileGuid = file.FileGuid; responseFileData.Creator = memberId; responseFileData.FileUrl = string.Format("{0}api/file/{1}", fileServer, file.FileGuid.ToString("N")); responseFileData.CreateUtcDate = DateTime.UtcNow; responseFileData.Name = HttpUtility.UrlDecode(file.Name); responseFileData.Size = file.FileSize; responseFileData.FileSize = file.FileSize; responseFileData.FileType = file.FileContentType; responseFileData.FileContentType = file.FileContentType; fileList.Add(responseFileData); fileStream.Close(); streamIndex++; } var db = _uow.DbContext; db.FileStorage.AddRange(files); db.SaveChanges(); fileList = (from fl in fileList join f in files on fl.FileGuid equals f.FileGuid select new FileStorageViewModel { Id = f.Id, CreateUtcDate = fl.CreateUtcDate, Creator = fl.Creator, Deleter = fl.Deleter, DeleteUtcDate = fl.DeleteUtcDate, FileContentType = fl.FileContentType, DownLoadUrl = fl.DownLoadUrl, FileGuid = fl.FileGuid, FileImageHeight = fl.FileImageHeight, FileImageUrl = fl.FileImageUrl, FileImageWidth = fl.FileImageWidth, FileSize = fl.FileSize, FileType = fl.FileType, FileUrl = fl.FileUrl, ImgUrl = fl.ImgUrl, Name = fl.Name, Size = fl.Size, WebViewUrl = fl.WebViewUrl }).ToList(); return(fileList); }
/// <summary> /// 取得單一請假單詳細資訊 - for app /// </summary> /// <param name="sqlLeave"></param> /// <param name="isManage"></param> /// <returns></returns> private Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse GetAPPDetailLeaveSqlQuery(AttendanceLeave sqlLeave, bool isManage) { var db = _uow.DbContext; var resLeaveVM = new Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse(); resLeaveVM.FileList = new List <FileStorageViewModel>(); //取得請假資訊 resLeaveVM.Comment = sqlLeave.Comment; resLeaveVM.CreateDate = sqlLeave.CreateDate.ToLocalTime(); resLeaveVM.Content = sqlLeave.Content; resLeaveVM.LeaveDate = sqlLeave.LeaveDate.ToLocalTime(); resLeaveVM.Subject = sqlLeave.Subject; //取得狀態名稱 // resLeaveVM.StatusName = Utility.ParaCondition.LeaveState.Status[sqlLeave.Status]; //申請人資訊 var applicationMemberInfo = db.Members.Find(sqlLeave.StudId); //請假單申請人照片 resLeaveVM.MemberImg = applicationMemberInfo.Photo; //請假單申請人姓名 resLeaveVM.MemberAccount = applicationMemberInfo.Account; //請假單申請人帳號 resLeaveVM.MemberName = applicationMemberInfo.Name; var learningCircleInfo = db.LearningCircle.Find(sqlLeave.LearningId); //所屬課程名稱 resLeaveVM.CourseName = learningCircleInfo.Name; //編碼eventId resLeaveVM.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(sqlLeave.EventId); var timeTableData = db.TimeTable.FirstOrDefault(t => t.Course_No == learningCircleInfo.LearningOuterKey && t.StartDate >= sqlLeave.LeaveDate); if (timeTableData == null || (timeTableData.StartDate.Value.DayOfWeek != sqlLeave.LeaveDate.DayOfWeek)) { timeTableData = null; } //上課地點與時間 resLeaveVM.Rooms = new List <Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo>(); var sectionDateTimeDataService = new Utility.DateTimeTools(); var dayofweekService = new DayOfWeekTools(); if (timeTableData != null) { var weekstring = dayofweekService.ChangeToCht(sqlLeave.LeaveDate.DayOfWeek); var weekTableData = db.WeekTable.FirstOrDefault(t => t.LearningCircleId == sqlLeave.LearningId && t.Week == weekstring); if (weekTableData != null) { for (var i = weekTableData.StartPeriod.Value; i <= weekTableData.EndPeriod.Value; i++) { var data = new Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo() { classStart = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, true), ClassEnd = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, false), RoomId = timeTableData.ClassRoomId, RoomName = timeTableData.ClassRoom, NameOfWeekDay = weekstring }; resLeaveVM.Rooms.Add(data); } } } resLeaveVM.Status = sqlLeave.Status; /* //設定狀態 * switch (sqlLeave.Status) * { * case "00": * resLeaveVM.Status = enumAbsenceFormStatus.Invalid; * break; * case "10": * resLeaveVM.Status = enumAbsenceFormStatus.Pass; * break; * case "20": * resLeaveVM.Status = enumAbsenceFormStatus.Wait; * break; * case "30": * resLeaveVM.Status = enumAbsenceFormStatus.Recall; * break; * case "40": * resLeaveVM.Status = enumAbsenceFormStatus.Reject; * break; * default: * break; * }*/ if (sqlLeave.LeaveType.HasValue) { //設定假單類型 switch (sqlLeave.LeaveType.Value) { case 1: resLeaveVM.LeaveType = enumLeaveType.SickLeave; break; case 2: resLeaveVM.LeaveType = enumLeaveType.PersonalLeave; break; case 3: resLeaveVM.LeaveType = enumLeaveType.LeaveForStatutory; break; case 4: resLeaveVM.LeaveType = enumLeaveType.Other; break; default: break; } } //取得請假單檔案資訊 var sqlFile = db.LeaveFile.Where(t => t.LeaveId == sqlLeave.Id); foreach (var _file in sqlFile) { var _fileEntity = new FileStorageViewModel(); var googleFile = db.FileStorage.Find(_file.GoogleId); //if (googleFile == null) // _fileEntity = db.GoogleFile.Find(_file.GoogleId); //else //{ //萬一與googleFileId一樣,判斷假單建立日期與檔案建立日期是否一致 //var checkCreateDate = googleFile.CreateUtcDate.Date; //if (checkCreateDate == sqlLeave.CreateDate.Date) //{ // _fileEntity = new FileViewModel() // { // Create_User = googleFile.Creator, // Create_Utc = googleFile.CreateUtcDate.ToLocalTime(), // DownLoadUrl = googleFile.FileUrl, // FileId = googleFile.FileGuid.ToString("N"), // FileType = googleFile.FileContentType, // Id = googleFile.Id, // Name = googleFile.Name, // Size = googleFile.FileSize, // WebViewUrl = googleFile.FileUrl // }; // if (googleFile.FileContentType.ToString().StartsWith("image")) // _fileEntity.ImgUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight); //} //else // _fileEntity = db.GoogleFile.Find(_file.GoogleId); //} if (googleFile.FileContentType.ToString().StartsWith("image")) { _fileEntity.FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight); _fileEntity.ImgUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight); } _fileEntity.WebViewUrl = _fileEntity.FileUrl; _fileEntity.DownLoadUrl = _fileEntity.FileUrl; _fileEntity.Size = _fileEntity.FileSize; _fileEntity.FileType = _fileEntity.FileContentType; if (_fileEntity != null) { resLeaveVM.FileList.Add(_fileEntity); } } resLeaveVM.IsManager = isManage; return(resLeaveVM); }