Tomcat 6을 사용하여 이미지 업로드를 허용하기 위해 아파치 공유 파일 업로드를 사용하고 있습니다. setSizeMax 및 setFileSizeMax를 사용하여 max 파일을 설정할 수 있습니다. 그러나 큰 파일 전체가 업로드되고 너무 크면 너무 많이 확인 된 것 같습니다. 다른 post에 따르면, setSizeMax가 업로드를 차단해야하는 것으로 보입니다. 그러나 그것은 내가 얻는 동작이 아닙니다.apache commons FileUpload - 전체 파일 업로드 전에 큰 파일 자르기
이를 테스트하기 위해, 나는 매우 낮은 sizeMax 및 fieSizeMax을 설정하고 오히려 큰 파일을 업로드했습니다. 대용량 파일을 거의 순간적으로 잘라내는 대신 15 초 동안 업로드하는 데 걸렸습니다.
아이디어가 있으십니까? 다음은 예외 조항이 단순화 된 코드입니다.
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(30);
upload.setSizeMax(28);
List items = null;
try {
items = upload.parseRequest(request);
} catch (Exception e) {
out.println("exceeded max file size..");
return;
}
MORE INFO : 다중/폼 데이터 : 바람둥이 6. maxPostSize 콘텐츠 유형이 작동하지 않습니다 설정을 사용하여. 또한 요청 내용 길이를 다시 확인하려면 전체 파일을 업로드해야합니다. 마지막으로 FileUpload의 김이 튀는 API를 사용하면 스트림이 닫힐 수 있기 전에 전체 파일을 다시 업로드해야하는 것처럼 보이기 때문에 작동하지 않는 것 같습니다. 서블릿이 바이트를 디스크에 쓰지 않더라도 업로드는 계속됩니다. 이미지 업로드 등 웹 애플 리케이션을위한 매우 일반적인 작업이기 때문에 바람둥이 6을 사용하여 거대한 업로드를 방지하는 방법이 있어야합니다.
사용자가 HTML5 호환 브라우저를 사용하도록 요구할 수있는 경우 클라이언트 측에서 유효성을 검사 할 수 있습니다. http://stackoverflow.com/questions/4112575/client-checking-file-size-using-html5 – rickz
@rickz를 참조하십시오. 서버 측을 보호하기 위해 클라이언트 측 검사/검증에 의존하는 것은 결코 좋은 생각이 아닙니다. 수표는 너무 쉽게 파괴 될 수 있습니다. –
@StephenC 이것은 보안 위험이있는 것은 아닙니다. 웹 앱 성능을 향상시키기위한 노력 일뿐입니다. 클라이언트 측 유효성 검사가 실패하면 서버는 항상 업로드를 거부 할 수 있습니다. – rickz