Ajax&Angularjs

 

 

//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 

 jquery.form.min.zip



 

<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>&nbsp;&nbsp;&nbsp;	                    	  
	                    	  <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();
});

 

 

 

 

 

 

http://kez1994.tistory.com/77



 

 

 

 

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

들지 않는 솜틀은 소리만 요란하다 , 어리석고 못난 사람일수록 젠체하고 나선다는 말. / 되지도 않을 일을 소문만 크게 낸다는 말.

댓글 ( 4)

댓글 남기기

작성