본문으로 바로가기

cos.jar 이용한 다중 업로드 및 파일명 변경

category Backend/Java 2019. 11. 8. 10:21
반응형

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