//2018-05-14 3-최준호 //소장품 pdf 만 업로드 @RequestMapping(value = "/boardFileUploadPDF.do", method=RequestMethod.POST) public void boardFileUpload2(@ModelAttribute("boardfileVo") BoardFileVo boardfileVo, MultipartHttpServletRequest multiRequest, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws OperationFailedException, IllegalStateException, IOException, SQLException{ PrintWriter out =response.getWriter(); TemplateVo templateVo = templateService.selectTemplate(boardfileVo.getBbscd()); //String uploadPath = templateVo.getFile_path(); //String uploadPath ="/upload/artwork/"; //String realPath=session.getServletContext().getRealPath("/"); String uploadPath="kor/resources/pdf/"; logger.info("\n\n\n\n\n 업로드 경로 : " + uploadPath); //logger.info("\n\n\n\n\n 업로드 경로 : " + realPath+FILE_PATH_PDF + "\n\n\n\n\n\n\n"); File desti=new File(uploadPath); //해당 디렉토리의 존재여부를 확인 if(!desti.exists()){ //디렉토리가 없다면 생성 desti.mkdirs(); } MultipartFile uploadFile = multiRequest.getFile("uploadfile"); String[] fileInfo; //String currUrl = request.getRequestURI(); if(!uploadFile.isEmpty()){ if((Integer.parseInt(templateVo.getFile_maxsize()) * 1024 * 1024) < (Long.bitCount(uploadFile.getSize()) + boardfileVo.getFile_upload_size())){ out.print("overflow"); }else{ fileInfo = FileUtil.parseFilePDFInf(uploadFile, uploadPath, request, session); logger.info("-----------> fileInfo : "+fileInfo); // fileInfo[0] = ori_name; // fileInfo[1] = save_name; out.print(fileInfo[0]+"*"+fileInfo[1]); } }else{ out.print("false"); } }
formData를 이용하여 간단하게 ajax로 파일업로드
ie9 이하에서는 작동기능
바로바로 jquery.form.js
<form name="pfrm" id="pfrm" method="post" enctype="multipart/form-data"> <!-- pdf --> <input type="hidden" name="ori_name" id="ori_name" > <input type="hidden" name="art_img2" id="art_img2" > <input type="hidden" name="image_2_delete" id="image_2_delete"> </form> <!-- 파일 업로드 Form 시작 --> <form name="boardFileAjaxForm" id="boardFileAjaxForm" method="post" enctype="multipart/form-data" action="/boardFileUploadPDF.do"> <input type="hidden" name="bbscd" value="22"> <input type="hidden" name="file_upload_size" class="file_upload_size" value=""> <input type="hidden" name="file_extension" id="file_extension" value="pdf"> <input type="hidden" name="menucd" value="647"> <table summary="PDF 파일 업로드" class="tbl_type"> <caption>대표이미지 클릭시 링크되는 PDF 파일 업로드</caption> <colgroup> <col width="120"> <col width="auto"> </colgroup> <tbody> <tr> <th scope="row">PDF 파일 첨부</th> <td> <c:choose> <c:when test="${!empty artworkVO.art_img2 }"> <input type="file" name="uploadfile" id="uploadfile" onchange="fnAjaxFileUploadChangeEvent2();" class="i_input i_text" style="width:99%;" > <a href="<c:url value="/kor/resources/pdf/${artworkVO.art_img2 }" />" target="_blank" >${artworkVO.ori_name }</a> <input type="checkbox" name="image_2_delete_chekck" id="image_2_delete_check" onchange="image2DeleteCheck()" /> <label for="image_2_delete_check">체크시 첨부 PDF 파일이<b>삭제</b> 됩니다.</label> </c:when> <c:otherwise> <input type="file" name="uploadfile" id="uploadfile" onchange="fnAjaxFileUploadChangeEvent2();" class="i_input i_text" style="width:99%;"> </c:otherwise> </c:choose> </td> </tr> </tbody></table> </form> <script> /** * 파일 업로드 이벤트 3-최준호 */ function fnAjaxFileUploadChangeEvent2() { var regex = /\.(bmp|jpg|png|jpeg|gif|JPG|PNG|JPEG|GIF|BMP)$/i; //이미지파일만 if ($("#uploadfile").val().match(regex)) { alert("이미지 파일은 대표이미지에 업로드를 이용해 주십시오"); $("#uploadfile").val(""); return false ; } else { if ($('#boardFileAjaxForm .file_upload_size').val() == "") { $('#boardFileAjaxForm .file_upload_size').val(0); } var file = $('#uploadfile').val().toLowerCase(); var file_extension = file.substring(file.lastIndexOf('.') + 1); var types_arr = $('#file_extension').val().split(","); var file_ex_ck = true; for (var i = 0; i < types_arr.length; i++) { if (file_extension == types_arr[i]) { file_ex_ck = false; break; } } if (file_ex_ck) { alert("업로드 할수 없는 파일 형식 입니다.\n" + file_extension + " 확장자를 업로드 하시고 싶으시다면\n해당 게시판 템플릿을 수정 하시길 바랍니다."); $("#uploadfile").val(""); return false; } //var form=$("#boardFileAjaxForm")[0]; // var formData=new FormData(form); /* console.log(formData); $.ajax({ url : "<c:url value='/boardFileUploadPDF.do' />", processData:false, contentType:false, enctype:"multipart/form-data", cache:false, data:formData, type:"POST", success:function(result){ alert(result); var beforStr=$.trim(result); var afterStr=beforStr.split("*"); $("#ori_name").val(afterStr[0]); $("#art_img2").val(afterStr[1]); }, error:function(e){ console.log("error : " , e); } }); */ //ajax form submit $('#boardFileAjaxForm').ajaxForm({ beforeSubmit: function (data,form,option) { //validation체크 //막기위해서는 return false를 잡아주면됨 return true; }, success: function(response,status){ //성공후 서버에서 받은 데이터 처리 var beforStr=$.trim(response); var afterStr=beforStr.split("*"); $("#ori_name").val(afterStr[0]); $("#art_img2").val(afterStr[1]); }, error: function(){ //에러발생을 위한 code페이지 } }).submit(); } } </script>
$(function(){ //ajax form submit $('#frm').ajaxForm({ beforeSubmit: function (data,form,option) { //validation체크 //막기위해서는 return false를 잡아주면됨 return true; }, success: function(response,status){ //성공후 서버에서 받은 데이터 처리 alert("업로드 성공!!"); }, error: function(){ //에러발생을 위한 code페이지 } }).submit(); });
댓글 ( 4)
댓글 남기기