grails - 上传 MultipartFile 时未捕获 SizeLimitExceededException
问题描述
我想在上传大文件时捕获异常 SizeLimitExceededException。但是,我在控制器中创建了一个方法来捕获此异常,但他返回:
Error 500: Internal Server Error
URI
/user/uploadProfileImage
Class
org.apache.tomcat.util.http.fileupload
.FileUploadBase$SizeLimitExceededException
Message
Could not parse multipart servlet request; nested exception is
java.lang.IllegalStateException:
org.apache.tomcat.util.http.fileupload
.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (310380) exceeds the configured maximum (128000)
Caused by
the request was rejected because its size (310380) exceeds the configured maximum (128000)
捕获异常的方法:
def handleSizeLimitExceededException(FileUploadBase.SizeLimitExceededException ex){
render(['error':true, message:ex.getMessage()] as JSON)
}
我的控制器:
class UserController {
...
def uploadProfileImage(ProfileImageCommand cmd) {
if (cmd.hasErrors()) {
//respond(cmd, model: [user: cmd], view: 'create')
response.status = 500
render(['error':true, message:cmd.getErrors()] as JSON)
}
String filename = uploadFileService.uploadFileInTemp(cmd, relativePathTmp)
Locale locale = request.locale
//flash.message = crudMessageService.message(CRUD.UPDATE, domainName(locale), pointOfInterest.id, locale)
render(['filename':filename, 'url': uploadFileService.getUrl(filename, relativePathTmp)] as JSON)
}
def handleSizeLimitExceededException(FileUploadBase.SizeLimitExceededException ex){
render(['error':true, message:ex.getMessage()] as JSON)
}
}
我的可验证:
class ProfileImageCommand implements Validateable {
MultipartFile imageFile
static constraints = {
imageFile validator: { val, obj ->
if ( val == null ) {
return false
}
if ( val.empty ) {
return false
}
['jpeg', 'jpg', 'png'].any { extension ->
val.originalFilename?.toLowerCase()?.endsWith(extension)
}
}
}
}
谢谢你的帮助!
解决方案
你没有提到你的grails版本。我假设它 3+
在 application.yml 中,您可以使用这些设置设置要上传的文件的最大大小。
grails:
controllers:
upload:
maxFileSize: 20000000
maxRequestSize: 20000000
此示例将请求和文件大小都设置为 20MB。您可以根据自己的需要对其进行调整。
推荐阅读
- html - 使用 Multer 在 Nodejs 中上传多个图像
- reactjs - 为什么在部署我的项目后卡住/空白页面?反应路由器 Dom | 参数
- python - 试图绘制大约 10 条线并以不同的方式命名每条线?
- java - 在集成 Razorpay 支付网关期间没有支付?
- reactjs - 如何在从 API 调用收到的响应中打开文件
- python - 对迭代中具有重复元素的字符串进行分区
- scala - 如何在 Akka Typed 中从 ActorSystem 传递自我引用
- javascript - 如何在同一行中创建左对齐按钮、居中对齐文本和右对齐按钮(ReactJS)
- r - 对不同的正态分布进行积分得到 0 概率
- gnuplot - 带有 gnuplot 的 4D 绘图