빽곰s
376
2019-04-15 19:36:53
4
143

다중 첨부파일 관련 질문


파일첨부관련 질문올립니다!!


제가 다중업로드를 form에서

List<MultipartFile> mFile = insDto.getFile();

스프링 @service 로직에서 첨부파일을 첨부하지 않고 게시글을 올릴경우 if를 이용하여 파일첨부 로직을 태우지 않게 분기처리를 해놨습니다.


그러나 테스트를 해보니 계속 첨부로직을 타길래 디버깅을 찍어보니 아래 사진처럼 fileName="" 값으로 들어와서 해당 리스트의 사이즈로 조건을 성립할수 없습니다.

저 빈값이 무조건 들어오는것이 아닌 첨부파일 1개만 첨부한다면 fileName 에는 해당 첨부파일 이름이 들어갑니다. 

첨부파일을 아에 첨부하지 않는다면 무조건 공백의 fileName이 무조건 들어옵니다... 


어떤게 문제일까요 ㅜㅜ



0
0
  • 답변 4

  • dogi
    167
    2019-04-16 09:28:09 작성 2019-04-16 09:30:11 수정됨

    질문 의도와 같지는 않지만,

    혹시 해결하고 싶으신게 파일첨부 내용이 없으면 로직을 태우지 않게 할려고 하시는건가요?

    <input type="file" name="a" multiple> 이걸 빈값으로 던져도 사이즈 -1의 빈 파일 객체는 들어가는 것으로 알고 있습니다만..

    0
  • 빽곰s
    376
    2019-04-16 11:14:40

    해당 size -1  의 빈객체가 들어가는것을 확인하였습니다. 하지만

    List 이기때문에 저 정보를 가져올려면 결국 for문을 돌려 해당 객체를 접근해야하지 않나요?

    0
  • dogi
    167
    2019-04-16 12:49:17 작성 2019-04-16 12:56:56 수정됨

    네 맞습니다. 혹시 if문을 어떻게 구성하셨나요?

    빈값이 들어가서 계속 if문을 통과한다면 사이즈 값을 뽑아서 -1일 경우를 걸어주면 되지않을까 생각합니다.

    사이즈 값을 뽑기 어려우시다면 

    제네릭을 사용하세요

    List<MultipartFile> list;
    
    if( list.get(i).getSize() == -1 ) { // 이 방법도 되고
    }
    if(StringUtils.isNullOrEmpty(String.valueOf(list.get(0).getOriginalFilename())) { } // 이 방법도 되고..

    이런 식으로 값 뽑아내서 체크하면 되지 않을까요?

    0
  • 빽곰s
    376
    2019-04-27 20:29:32

    파일업로드를 공통모듈로 쓰기때문에 모든 사용자가 해당 기능을 사용했을경우 for문을 많이 돌리면 해당 함수의 기능이 끝날때까지 뒤에 사용자들은 요청을 기달려야할거 같습니다.

    그래서 for문 보다는..이게 좀더 효율적인거 같아 이렇게 처리했습니다. 

    jqeury로 submit 시점에 해당 input 이 "" 이 객체로 들어올경우 disabled 처리하여 값이 안넘어오게 처리했습니다.

    문제사항있다면 답변부탁드려요 



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