inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Spring MVC Phần 2 - Kỹ thuật vận dụng phát triển Web Backend

Servlet và Tải lên tệp 2

itemName에 null

444

luckych

14 câu hỏi đã được viết

0

public class ServletUploadControllerV2 {
    @Value("${file.dir}")
    private String fileDir;
    @GetMapping("/upload")
    public String newFile() {
        return "upload-form";
    }
    @PostMapping("/upload")
    public String saveFileV1(HttpServletRequest request) throws
            ServletException, IOException {
        log.info("request={}", request);
        String itemName = request.getParameter("itemName");
        log.info("itemName={}", itemName);
        Collection<Part> parts = request.getParts();
        log.info("parts={}", parts);
        for (Part part : parts) {
            log.info("==== PART ====");
            log.info("name={}", part.getName());
            Collection<String> headerNames = part.getHeaderNames();
            for (String headerName : headerNames) {
                log.info("header {}: {}", headerName,
                        part.getHeader(headerName));
            }
            //편의 메서드
            //content-disposition; filename
            log.info("submittedFileName={}", part.getSubmittedFileName());
            log.info("size={}", part.getSize()); //part body size
            //데이터 읽기
            InputStream inputStream = part.getInputStream();
            String body = StreamUtils.copyToString(inputStream,
                    StandardCharsets.UTF_8);
            log.info("body={}", body);
            //파일에 저장하기
            if (StringUtils.hasText(part.getSubmittedFileName())) {
                String fullPath = fileDir + part.getSubmittedFileName();
                log.info("파일 저장 fullPath={}", fullPath);
                part.write(fullPath);
            }
        }
        return "upload-form";
    }
}

 

<로그>

2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : request=org.apache.catalina.connector.RequestFacade@46f8d0d

2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : itemName=null

2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : parts=[]

2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [926]

2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.a.coyote.http11.Http11InputBuffer : Received []

2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@7e5a37d:org.apache.tomcat.util.net.NioChannel@72e2ee37:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50696]], Status in: [OPEN_READ], State out: [OPEN]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [926]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [0]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header

java.io.EOFException: null

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header

java.io.EOFException: null

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing request

java.io.EOFException: null

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@45100ea6:org.apache.tomcat.util.net.NioChannel@3f9eb895:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50697]], Status in: [OPEN_READ], State out: [CLOSED]

2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing request

java.io.EOFException: null

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78]

at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

2023-08-15 18:53:16.475 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@7e5a37d:org.apache.tomcat.util.net.NioChannel@72e2ee37:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50696]], Status in: [OPEN_READ], State out: [CLOSED]

 

itemName에서부터 null이 들어가서 오류가 나는 것 같은데 강사님 소스 그대로 붙여넣기 해도 동일한 오류가 발생합니다ㅠㅠ

itemName 파라미터를 왜 못 가져올까요,,

spring mvc

Câu trả lời 2

1

luckych

아,,, 지난 강의때 이 옵션 false 처리한걸 안 바꿨네요..ㅎㅎ

true로 바꾸니 작동합니당

spring.servlet.multipart.enabled=false

0

y2gcoder

안녕하세요. 차노쓰님, 공식 서포터즈 y2gcoder입니다.

스스로 잘 해결하셨습니다 :) 

강의 수강 중 강의 관련 궁금한 사항은 언제든 질문 남겨주세요^^

이미지 업로드와 db 트랜잭션 묶는법

0

38

1

Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4

0

45

2

MessageSourceTest 코드

0

45

1

인터셉터 에러 설정

0

47

1

resolveArgument()메서드 질문

0

54

1

43강 검증1 에서 실패 로직 관련 질문있습니다.

0

52

2

타임리프 3.X 버전 rendering, serializer 에러 해결 방법

2

130

3

스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ

0

86

3

pdf 오타 문의

0

54

1

ItemUpdateForm 검증 관련 질문입니다.

0

46

1

22page 링크 주소 변경

0

54

2

특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문

0

52

1

섹션3번 수업에 대한 질문입니다.

0

78

2

@Autowired 보다 더 좋은 방법이 어떤 걸까요?

0

84

2

타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.

0

63

1

자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다

0

140

3

스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문

0

61

1

톰캣 에러 페이지가 안보입니다.

0

98

2

apiEceptionController에서 센드 에러 호출하면 안되는지?

0

80

1

세션 타임아웃시 쿠키 삭제 방법이 없나요?

0

116

2

ApiExceptionController 질문드립니다.

0

62

1

셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?

0

63

1

MemberRepository 필드의 fianl 선언 유무

0

82

2

혹시 index.html 에서는 fragment 사용이 안되는건가요

0

57

1