public async Task <HttpResponseMessage> WriteUpload() { // 요청이 multipart/form-data를 담고 있는지 확인 if (!Request.Content.IsMimeMultipartContent()) { //아니라면 에러 throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string fullPath = ConfigurationManager.AppSettings["FilePath"].ToString(); var provider = new CustomMultipartFormDataStreamProvider(fullPath); //- > 파일데이터 생성 - (MultipartFormDataStreamProvider 오버라이드 후 커스텀적용) try { //비동기 적용 await Request.Content.ReadAsMultipartAsync(provider); //폼데이터 BoardInfo info = new BoardInfo(); info.userId = provider.FormData.GetValues("userId").SingleOrDefault(); info.boardTitle = provider.FormData.GetValues("boardTItle").SingleOrDefault(); info.boardContent = provider.FormData.GetValues("boardContent").SingleOrDefault(); List <Boardfile> list = new List <Boardfile>(); //다중파일데이터 for (int i = 0; i < provider.FileData.Count; i++) { Boardfile file = new Boardfile { fileName = provider.FileData[i].Headers.ContentDisposition.FileName.Replace("\"", string.Empty).ToString() , filePath = provider.FileData[i].LocalFileName , fileGuid = provider.FileData[i].LocalFileName.Substring(provider.FileData[i].LocalFileName.IndexOf("Upload") + 7) }; list.Add(file); } info.BoardFileList = list; //DB INSERT if (_BoardBiz.RegisterBoardInfo(info)) { return(Request.CreateResponse(HttpStatusCode.OK)); } return(Request.CreateResponse(HttpStatusCode.NotModified)); } catch (System.Exception e) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e)); } }
public async Task <HttpResponseMessage> UpdateUpload() { BoardInfo info = new BoardInfo(); // 요청이 multipart/form-data를 담고 있는지 확인 if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } //업로드 경로생성 string fullPath = ConfigurationManager.AppSettings["FilePath"].ToString(); var provider = new CustomMultipartFormDataStreamProvider(fullPath); List <Boardfile> list = new List <Boardfile>(); try { await Request.Content.ReadAsMultipartAsync(provider); //정보입력 info.boardId = Int32.Parse(provider.FormData.GetValues("boardId").SingleOrDefault()); info.userId = provider.FormData.GetValues("userId").SingleOrDefault(); info.boardTitle = provider.FormData.GetValues("boardTitle").SingleOrDefault(); info.boardContent = provider.FormData.GetValues("boardContent").SingleOrDefault(); //먼저 신규파일있을시 파일 info담기 for (int i = 0; i < provider.FileData.Count; i++) { Boardfile file = new Boardfile { fileName = provider.FileData[i].Headers.ContentDisposition.FileName.Replace("\"", string.Empty).ToString(), filePath = provider.FileData[i].LocalFileName, fileGuid = provider.FileData[i].LocalFileName.Substring(provider.FileData[i].LocalFileName.IndexOf("Upload") + 7) }; list.Add(file); } info.BoardFileList = list; } catch (Exception) { } // 기존 파일처리(삭제 데이터) //cnt = 기존 파일데이터 삭제 개수 int cnt = Int32.Parse(provider.FormData.GetValues("dFileCnt").SingleOrDefault()); //삭제 파일있을시 if (cnt > 0) { //FileId를 기준으로 삭제 for (int i = 0; i < cnt; i++) { int dFile = Int32.Parse(provider.FormData.GetValues("dFile" + (i + 1)).SingleOrDefault()); _BoardBiz.DeleteBoardFile(dFile); // DB,서버 동시삭제 } } //파일처리 END //업데이트 처리 //정보 업데이트(신규파일 등록 && 정보 업데이트) if ((_BoardBiz.UpdateBoardInfo(info)) && (_BoardBiz.RegisterBoardFile(list, info.boardId))) { return(Request.CreateResponse(HttpStatusCode.OK)); } return(Request.CreateResponse(HttpStatusCode.NotModified)); }