<스프링 시큐리티 적용시>


web.xml



<!-- 파일업로드 필터 -->
<filter>
    <filter-name>springMultipartFilter</filter-name>
    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>springMultipartFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 스프링 시큐리티 필터 -->
<!-- 스프링 시큐리티 필터는 파일업로드 필터 앞에 나오면 안됨-->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
cs



Servers의 content.xml



<Content>
<!-- 밑에꺼로 변경 --> 
<Context allowCasualMultipartParsing="true">
cs



<파일 용량 에러>


Servers의 server.xml


1
2
3
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- 밑에꺼로 변경 --> 
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="10000000"/>
cs



tomcat 사용할 때 post로 데이터 전송하게 되면

일반적으로는 정상처리되나, 

용량이 너무 크게되면 안됨(default값이 2M인 2097152이다)


비슷하게 maxParameterCount도 있다(get이나 post로 전송시 최대 파라미터 개수)

하지만 maxParameterCount는 default가 10000개이므로 

파라미터 개수로 에러나는 경우는 적을듯


참조 : http://java7.tistory.com/83

'SPRING' 카테고리의 다른 글

스프링 파일 업로드/다운로드  (1) 2018.03.27
스프링에서 한글 인코딩  (0) 2018.03.26
스프링 시큐리티 적용시키기  (1) 2018.03.05

 pom.xml


<!-- fileUpload/download -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
 
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
cs



web.xml


<filter>
        <filter-name>springMultipartFilter</filter-name>
        <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>springMultipartFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
cs



dispatcher-servlet.xml



<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="52428800"/>    <!-- 50MB -->
        <property name="maxInMemorySize" value="1048576"/>    <!-- 1MB -->
</bean>
cs



FileUtils.java



//다중 파일 업로드
public List<FileVO> multiUploadFile(MultipartHttpServletRequest request) throws IllegalStateException, IOException {
        
    List<FileVO> filelist = new ArrayList<BoardVO>();
    //file이라는 파라미터를 리스트로 받음
    List<MultipartFile> uploadFileList = request.getFiles("file");
        
    for (int i = 0; i < uploadFileList.size(); i++) {
        //파일 원래이름
        String oriFileName = uploadFileList.get(i).getOriginalFilename();
            
        if ((oriFileName != null&& (!oriFileName.equals(""))) {
            String ext = "";
            //확장자 구분
            int index = oriFileName.lastIndexOf(".");
            if (index != -1) {
                ext = oriFileName.substring(index);
            }
            //파일 저장이름
            String saveFileName = "File-" + UUID.randomUUID().toString()+ ext;
            //파일 저장
            uploadFileList.get(i).transferTo(new File("저장경로" + saveFileName));
            filelist.add(i, new BoardVO());
            filelist.get(i).setFileOrgName(oriFileName);
            filelist.get(i).setFileSaveName(saveFileName);
                
            }
        }
        return filelist;
    }
 
//파일 다운로드
public void downloadFile(FileVO fileVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
        
    File file = new File("저장경로", fileVO.getFileSaveName());
 
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
 
    //User-Agent : 어떤 운영체제로  어떤 브라우저를 서버( 홈페이지 )에 접근하는지 확인함
    String header = request.getHeader("User-Agent");
    String fileName;
    
    if ((header.contains("MSIE")) || (header.contains("Trident")) || (header.contains("Edge"))) {
        //인터넷 익스플로러 10이하 버전, 11버전, 엣지에서 인코딩 
        fileName = URLEncoder.encode(boardfile.getFileOrgName(), "UTF-8");
    } else {
        //나머지 브라우저에서 인코딩
        fileName = new String(boardfile.getFileOrgName().getBytes("UTF-8"), "iso-8859-1");
    }
    //형식을 모르는 파일첨부용 contentType
    response.setContentType("application/octet-stream");
    //다운로드와 다운로드될 파일이름
    response.setHeader("Content-Disposition""attachment; filename=\""+ fileName + "\"");
    //파일복사
    FileCopyUtils.copy(in, response.getOutputStream());
    in.close();
    response.getOutputStream().flush();
    response.getOutputStream().close();
    }
cs



참조 :    http://androphil.tistory.com/330

     http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:file_download

'SPRING' 카테고리의 다른 글

스프링 파일 업로드 추가사항  (0) 2018.03.27
스프링에서 한글 인코딩  (0) 2018.03.26
스프링 시큐리티 적용시키기  (1) 2018.03.05

Get전송방식


Servers server.xml

URIEncoding="UTF-8" 추가



<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
->
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
cs

Post전송방식
web.xml encodingFilter추가

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>
cs


'SPRING' 카테고리의 다른 글

스프링 파일 업로드 추가사항  (0) 2018.03.27
스프링 파일 업로드/다운로드  (1) 2018.03.27
스프링 시큐리티 적용시키기  (1) 2018.03.05

+ Recent posts