jink6111
238
2018-04-16 19:45:50
7
427

input type=file multiple 속성 사용시 다중 업로드


질문 드릴게요 !!


JSP :

<input type="file" multiple="multiple" id="file_name" name="file_name[]"/



js :

var formData = new FormData();

$($("#file_name")[0].files).each(function(index, file){

formData.append("file_name[]", file)

});

$.ajax({

url: url,

type: 'POST',

data: formData,

processData: false,

contentType: false,

success: function(data, textStatus, jqXHR)

{

console.log("AJAX SUCCESS !! ");

//console.log( "%o", data );

},

error:function(jqXHR,textStatus,errorThrown)

{

console.log("You can not send Cross Domain AJAX requests: "+errorThrown);

}                                    

});




controller : MultipartHttpServletRequest multiFiles 로 받아서


Iterator<String>files = multiFiles.getFileNames();;

while(files.hasNext()) {

String uploadFile = files.next();

MultipartFile mFile = multiFiles.getFile(uploadFile);

ResponseEntity<String> resultFile = new ResponseEntity<String>(UploadFileUtils.uploadFile("C://경로//경로//경로//", mFile.getOriginalFilename(), mFile.getBytes()), HttpStatus.OK);

}

**resultFile은 날짜별로 폴더를 만들어서 서버에 저장하기 위한 소스입니다 (*구글링을 통해..)



이렇게 하면 개발자 도구에서 보내준 값들은 여러개 파일을 보낸걸로 되어 있는데

controller 에서는 하나만 받는 건지.. sysout 을 찍어봤는데 파일 하나만 출력해서

하나만 업로드가 됩니다 .... 


여러개를 한꺼번에 업로드 하고 싶은데 무엇이 문제일까요 ? ㅜㅜ





0
0
  • 답변 7

  • aterilio
    207
    2018-04-16 19:54:14

    data: formData,

    로 대입하실때 파일명 리스트가 다 넘어간 게 맞나요?ㅁ?

    formData 를 한번 찍어보세요~

    0
  • jink6111
    238
    2018-04-17 09:44:54

    @aterilio 

    개발자 모드에서 network탭에 Request Payload 에서 보내진 값들이 제대로 확인이 되네요 .. ㅠㅠ

    흠 ... controller  단에서 다른 방법으로 받아봐야할듯하네요 ㅠㅠ

    답변 감사드립니다 ! 

    0
  • aterilio
    207
    2018-04-17 17:32:12

    그럼

    Iterator<String>files = multiFiles.getFileNames();

    요기 부분에서 중단점 찍고 내부 확인 한번 해보심은 어떨까요?

    0
  • jink6111
    238
    2018-04-17 20:58:31 작성 2018-04-17 20:58:50 수정됨

    @aterilio

    흐흐 .. 해결했습니다

    ajax로 보내주는 거 까지는 잘했는데 controller에서 iterator 로 받아서 돌려보니 자꾸 하나만 받더라구요..

    그래서 List로 받아서 ... size() 로 돌려서 받았나 ... 흠 기억이 가물가물 하네요 .. 

    무튼 반복문 소스를 바꾸니 아주 잘 받아집니다 !!


    해결 후에 다른 거 처리한다고 어떻게 바꿨는지 기억이 가물가물하네요 내일 회사가서 한번 보고

    다시 적겠습니다 ㅋ_ㅋ


    답변 감사드립니다 ^^



    0
  • jink6111
    238
    2018-04-18 09:33:11

    @aterilio

    아 맞네요 !

    Iterator 로 안받고

    List 로 받아서 

    for문으로 size() 돌렸습니다 !! 


    0
  • aterilio
    207
    2018-04-18 21:54:54

    jink6111

    Iterator 는 말하자면 리스트의 항목 하나니까요.

    반복할 수 있는 아이가 아니죠 ㅎㅎ;

    0
  • jink6111
    238
    2018-04-18 22:22:27

    @ aterilio 

    에고 개념이 한참 모자라다 보니 이렇게 고생을 하네요 ㅎㅎㅎㅎ

    이렇게 또 하나를 배우네요 !!

    건강 조심하세요 !



    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.