반응형
cos.jar 이용한 다중 업로드 및 파일명 변경
cos.jar 를 이용한 파일 다중 업로드 input 태그의 name값을 동일하게 주지않고 인덱스를 이용하여 준다. <ul class="uploadUl mb5"> <li> <input type="file" name="file1" id="file" style="width:80%;height:20px; " > <img class="btnP" src="/images/btn/ic_plus.gif" style="vertical-align:middle;"/> <img class="btnM" src="/images/btn/ic_minus.gif" style="vertical-align:middle;"/> </li> <li> <input type="file" name="file2" id="file" style="width:80%;height:20px; " > <img class="btnP" src="/images/btn/ic_plus.gif" style="vertical-align:middle;"/> <img class="btnM" src="/images/btn/ic_minus.gif" style="vertical-align:middle;"/> </li> <li> <input type="file" name="file3" id="file" style="width:80%;height:20px; " > <img class="btnP" src="/images/btn/ic_plus.gif" style="vertical-align:middle;"/> <img class="btnM" src="/images/btn/ic_minus.gif" style="vertical-align:middle;"/> </li> </ul> // 폼 제출 시 추가할 소스 첨부파일 추가안된 폼 삭제 var leLength = $(".uploadUl li").length; for(var i=0; i<leLength; i++) { if ($("input[name='file"+(i+1)+"']").val() == "") $("input[name='file"+(i+1)+"']").parent("li").remove(); } // 첨부파일 추가 및 삭제 $(document).on("click", ".btnP", function() { var target = $(this); var fileNum = Number(target.parent().parent("ul").find("li:last-child").find("input").attr("name").substring(4)) + 1; $('<li><input type="file" name="file'+fileNum+'" id="file" style="width:80%;height:20px; "><img class="btnP" src="/images/btn/ic_plus.gif" style="vertical-align:middle;margin: 0 4px;"><img class="btnM" src="/images/btn/ic_minus.gif" style="vertical-align:middle;"></li>').insertAfter(target.parent().parent("ul").find("li:last-child")); }); $(document).on("click", ".btnM", function() { var target = $(this); var liLen = $(this).parent().parent("ul").find("li").length; if(liLen != 1) target.parent().remove(); else alert("모두 지울 수 없습니다."); }); 추가안된 폼 삭제하는 이유는 null 값일 때 에러 발생해서 지웠음 업로드 시 Enumeration에 반환된 배열이 순서가 거꾸로 바뀐다 (3->2->1 순서) // 파일 업로드 String uploadPath = ""; // 업로드 경로 int maxFileSize = 1024 * 1024 * 2; // 업로드 제한 용량 = 2MB String encoding = "utf-8"; // 인코딩 // 이 시점에서 업로드 된다 MultipartRequest mr = new MultipartRequest(request, uploadPath, maxFileSize, encoding, new DefaultFileRenamePolicy()); Enumeration e = mr.getFileNames(); // 폼의 이름 반환 while(e.hasMoreElements()) { String eleName = (String) e.nextElement(); String fileName = mr.getFilesystemName(eleName); String fileRealName = mr.getOriginalFileName(eleName); if (fileName != null) { // 이름 바꿔 업로드 File originFile = new File(uploadPath + "/" + fileName); String originFileName = originFile.getName(); String ext = originFileName.substring(originFileName.lastIndexOf(".")); String fileTempName = System.currentTimeMillis() + ext; long fileSize = originFile.length(); File tempFile = new File(uploadPath + "/" + fileTempName); if(!originFile.renameTo(tempFile)) { System.out.println("파일명변경 실패"); } } } |
반응형
'Backend > Java' 카테고리의 다른 글
게시판 번호 역순 출력 (0) | 2019.12.12 |
---|---|
파일 다운로드 기본 (0) | 2019.11.11 |
String Encoding Check (0) | 2019.09.26 |
Jar 압축 및 압축풀기 (0) | 2019.08.20 |
BigInteger의 큰 수 계산 (0) | 2019.05.30 |