Grails3 파일 업로드 maxFileSize 제한
Grils 3에서 파일 업로드 maxFileSize 제한을 업데이트하려고 시도하고 있습니다.src/main/resources/application.properties
,application.groovy
그리고.application.yml
하지만 여전히 예외를 두고 있습니다.
Class
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException
Message
the request was rejected because its size (154738) exceeds the configured maximum (128000)
Grails 3 응용 프로그램에서 구성할 위치와 내용에 대한 도움말이 있습니까?
그레일 3, 그레일 4, 그레일 5 및 그레일 6
해결책은 다음과 같습니다.maxFileSize
그리고.maxRequestSize
내부 한계application.yml
파일(일반적으로 내부에 배치됨)grails-app/conf/
). 다음과 같은 것을 사용해야 합니다.
grails:
controllers:
upload:
maxFileSize: 2000000
maxRequestSize: 2000000
교체하다2000000
파일 업로드 및 전체 요청에 대해 원하는 최대 바이트 수를 지정합니다.Grails 3, Grails 4, Grails 5 및 Grails 6의 기본값은 128000(~128KB)입니다.
FAQ
MB에서 바이트로 변환하는 방법은 무엇입니까?
YOUR_MAX_SIZE_IN_MB * 1024 * 1024 = BYTES
예: 5MB(바이트) 변환
5 * 1024 * 1024 = **5242880** bytes
보안
OWASP에 따르면
서비스 거부 공격을 방지하기 위해 파일 크기를 최대값으로 제한
따라서 DoS 공격을 방지하고 전반적인 애플리케이션 성능을 강화하기 위해 이러한 제한이 존재합니다(요청 크기 제한 == 서버에서 더 많은 메모리 사용).
에 대한 올바른 값은 무엇입니까?maxFileSize
그리고.maxRequestSize
?
응용 프로그램 유형에 따라 다르지만 일반적으로 너무 높게 유지하는 것은 좋지 않습니다.정말로 큰 파일을 업로드해야 한다면, 아마도 전용 서비스를 개발(또는 사용)해야 할 것입니다.
문제의 일부는 최대 파일 크기를 설정하는 것입니다.다른 문제는 그 오류를 우아하게 처리하는 것입니다.
제 콩의 정의는 다음과 같습니다.
multipartResolver(MyMultipartResolver) {
maxUploadSize = (5*1024*1024)
}
다음은 제 구현입니다.
public class MyMultipartResolver extends CommonsMultipartResolver {
static final String FILE_SIZE_EXCEEDED_ERROR = "fileSizeExceeded";
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) {
try {
return super.resolveMultipart(request);
} catch (MaxUploadSizeExceededException e) {
request.setAttribute(FILE_SIZE_EXCEEDED_ERROR, true);
return new DefaultMultipartHttpServletRequest(request, new LinkedMultiValueMap<String, MultipartFile>(), new LinkedHashMap<String, String[]>(), new LinkedHashMap<String, String>());
}
}
}
파일이 너무 큰지 확인하기 위해 컨트롤러 또는 필터에서 요청 속성을 확인하는 것입니다.
또한 application.properties 또는 application.yml에서 새로운 최대값을 설정하려고 시도했지만 실패했습니다.
그러나 conf/spring/resources.groovy에서 빈 정의를 사용하는 것이 효과적입니다.
import javax.servlet.MultipartConfigElement
// Place your Spring DSL code here
beans = {
multipartResolver(org.springframework.web.multipart.commons.CommonsMultipartResolver){
maxInMemorySize=1000000
maxUploadSize=100000000
//uploadTempDir="/tmp"
}
}
https://github.com/zyro23/grails-core-668/blob/master/grails-app/conf/application.yml 을 사용해 보십시오.
업로드: maxFileSize: 999999999maxRequestSize: 99999999
https://github.com/grails/grails-core/issues/668
grails.controllers.upload.maxFileSize
및/또는
grails.controllers.upload.maxRequestSize
구성 속성/이벤트
다음이 저에게 효과가 있었습니다(그림 3.3.9).
에conf/spring/resources.groovy
import org.springframework.web.multipart.commons.CommonsMultipartResolver
// Place your Spring DSL code here
beans = {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver()
multipartResolver.setMaxUploadSize(2000000)
}
에MyFile.groovy
영역
package attainrvtwo
class MyFile {
byte[] myFile
static constraints = {
myFile(maxSize: 2000000)
}
}
의 끝에conf/application.yml
---
grails:
controllers:
upload:
maxFileSize: 2000000
maxRequestSize: 2000000
언급URL : https://stackoverflow.com/questions/29845943/grails3-file-upload-maxfilesize-limit
'programing' 카테고리의 다른 글
일 년 중 어느 분기에 날짜가 있는지 확인하는 기능이 있습니까? (0) | 2023.07.19 |
---|---|
Oracle에서 행의 sha1-hash (0) | 2023.07.19 |
python numpy 시스템 엡실론 (0) | 2023.07.19 |
데이터베이스에서 jango 개체 다시 로드 (0) | 2023.07.19 |
Mac에 R 설치 중 - 경고 메시지:"C"를 사용하여 LC_CTYPE을 설정하지 못했습니다. (0) | 2023.07.19 |