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)); } }
/// <summary> /// 파일조회 /// </summary> /// <param name="boardId"></param> /// <returns></returns> public List <Boardfile> RetrieveBoardFile(int boardId) { SqlCommand sqlCmd = new SqlCommand { CommandText = "Exercise@RetrieveBoardFile", CommandType = CommandType.StoredProcedure }; sqlCmd.Parameters.Add("@board_id", SqlDbType.Int).Value = boardId; SqlDataReader reader = SQLHelper.ExecuteReader(sqlCmd); List <Boardfile> list = new List <Boardfile>(); Boardfile file = null; try { if (reader != null) { while (reader.Read()) { file = new Boardfile { boardId = (int)reader["boardId"], fileId = (int)reader["fileId"], fileName = reader["fileName"].ToString(), filePath = reader["filePath"].ToString(), fileGuid = reader["fileGuid"].ToString() }; list.Add(file); } } } catch (Exception) { } finally { reader.Close(); } return(list); }
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)); }