전체 파일을 전송하지 않고 JavaScript (또는 Java)로 업로드되는 파일의 크기를 어떻게 제한합니까?

StackOverflow https://stackoverflow.com/questions/158149

문제

클라이언트 측 브라우저에서 JSP 페이지에서 업로드되는 파일의 크기가 사용자가 전체 파일을 너무 커서 올리기 위해 전체 파일을 업로드하도록 강요하지 않고 설정 크기 제한을 초과하는지 여부를 클라이언트 측 브라우저에서 검증하는 방법이 있습니까?

가능한 경우 Flash 또는 ActiveX와 같은 독점적 인 컨트롤이나 기술을 피하고 싶습니다.

감사!

도움이 되었습니까?

해결책

이것은 완벽한 솔루션은 아니지만 컨텐츠 길이의 HTTP 헤더를 확인하면 request.getHeader("Content-Length") 그런 다음 전체 파일을 전송하지 않도록 선택할 수 있습니다.

설명을 통해 매우 큰 파일이 한 번에 전송되지는 않습니다. 실제로 게시물 덩어리를 나타내는 스트림을 열고 전체를 전송할 수 있도록 읽어야합니다.

반면에, 서비스 거부 공격에 대해 걱정한다면, 콘텐츠 길이 헤더를 쉽게 만들 수 있기 때문에 실제로 신뢰할 수 없습니다. 이 경우 한도를 설정하고 해당 한도를 초과하자마자 중지 하여이 파일의 전송을 스트리밍해야합니다.

다른 팁

플래시 결정을 재고하고 YUI 업 로더를 살펴보십시오.

http://developer.yahoo.com/yui/uploader/

무엇보다도 FileSelect 이벤트는 선택한 파일의 크기를 선택한 직후 바이트로하지만 업로드되기 전에 제한 할 수 있습니다.

JSP 또는 PHP를 사용하면 업로드가 이미 발생할 때까지 페이지가 요청을받지 않기 때문에 파일 크기를 제한 할 수 없습니다. 이 시점에서 파일을 저장하지 않기로 결정할 수는 있지만 너무 늦을 수 있습니다.

예를 들어 몇 가지 Java 솔루션이 있습니다 myuploader 또는 헤르메스. 일부는 여러 파일 업로드를 지원하고 부분 업로드를 재개하고 일부는 소스 코드를 제공합니다. 또한 직접 쓸 수도 있지만 로컬 파일 시스템에 액세스해야하므로 작동하려면 서명 된 애플릿이어야합니다. Apache를 웹 서버로 사용하는 경우 주어진 시간에 업로드되는 모든 파일을 메모리 할 때 전체 파일 크기를 장착하기에 충분한 RAM이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top