Commit d8e1cb4a authored by daniel's avatar daniel

fix(upload): 文件上传大小的限制bug修复

parent f95cb58c
...@@ -100,6 +100,8 @@ public class SpringCommonFilter implements Filter { ...@@ -100,6 +100,8 @@ public class SpringCommonFilter implements Filter {
} }
} }
/** /**
* Use Spring Mvc principle that searching the best matching HandlerMethod(aka. Controller Method) * Use Spring Mvc principle that searching the best matching HandlerMethod(aka. Controller Method)
* 使用SpringMVC的查询Handler机制,查找合适的`HandlerMethod` * 使用SpringMVC的查询Handler机制,查找合适的`HandlerMethod`
......
...@@ -2,20 +2,38 @@ package com.dlbridge.jadp.plugins.cmpt.web; ...@@ -2,20 +2,38 @@ package com.dlbridge.jadp.plugins.cmpt.web;
import com.neusoft.www.utils.web.Result; import com.neusoft.www.utils.web.Result;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ControllerAdvice @ControllerAdvice
@Order(0) @Order(0)
@Log4j2 @Log4j2
public class ExceptionController { public class ExceptionController {
@Value("${spring.servlet.multipart.max-file-size}")
private String maxFileSize;
@ResponseBody @ResponseBody
@ExceptionHandler(value = Exception.class) @ExceptionHandler(value = Exception.class)
public Result errorHandler(Exception ex) { public Result<?> errorHandler(Exception ex) {
log.info("exception from groble excetioncontroller : "+ ex.getMessage(),ex); log.info("exception from global exceptionController : "+ ex.getMessage(),ex);
return Result.fail().setMsg(ex.getMessage()); return Result.fail().setMsg(ex.getMessage());
} }
@ResponseBody
@ExceptionHandler(MaxUploadSizeExceededException.class)
public Result<?> handleMaxUploadSizeExceeded(MaxUploadSizeExceededException ex,
HttpServletResponse response) throws IOException {
log.error("文件上传大小超出限制: {}", ex.getMessage());
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return Result.fail().setMsg("文件大小超出限制,最大允许: "+maxFileSize);
}
} }
...@@ -6,22 +6,25 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource ...@@ -6,22 +6,25 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.password=mysql_master_geexek_408 spring.datasource.password=mysql_master_geexek_408
spring.datasource.username=mysql_master spring.datasource.username=mysql_master
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://rm-bp1xezgtx890ssl6rto.mysql.rds.aliyuncs.com:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true spring.datasource.url=jdbc:mysql://rm-bp1xezgtx890ssl6rto.mysql.rds.aliyuncs.com:3306/gksite?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&&useSSL=false
mybatis.typeAliasesPackage=com.dlbridge.jadp.plugins mybatis.typeAliasesPackage=com.dlbridge.jadp.plugins
mybatis.mapperLocations=classpath:com/dlbridge/jadp/plugins/**/**.xml mybatis.mapperLocations=classpath:com/dlbridge/jadp/plugins/**/**.xml
mybatis.configuration.map-underscore-to-camel-case=true mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.jdbc-type-for-null=null mybatis.configuration.jdbc-type-for-null=null
spring.profiles.active=dev spring.profiles.active=dev
server.port=9802 spring.devtools.livereload.enabled=false
spring.devtools.restart.enabled=false
server.port=9090
charset_name=UTF-8 charset_name=UTF-8
#\u8BBE\u7F6E\u73AF\u5883\u914D\u7F6E #\u8BBE\u7F6E\u73AF\u5883\u914D\u7F6E
#spring.profiles.active=dev #spring.profiles.active=dev
#http encoding #http encoding
spring.http.encoding.charset=UTF-8 spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true spring.http.encoding.enabled=true
spring.http.encoding.force=true spring.http.encoding.force=true
logging.file=./logs/gksite.log logging.file=/Users/daniel/Desktop/daniel/2024sk/project/gk/logs/gksite.log
logging.file.max-size=10MB logging.file.max-size=10MB
#\u5173\u95ED\u542F\u52A8Logo #\u5173\u95ED\u542F\u52A8Logo
spring.main.banner-mode=off spring.main.banner-mode=off
......
...@@ -60,7 +60,7 @@ spring.redis.jedis.pool.min-idle=20 ...@@ -60,7 +60,7 @@ spring.redis.jedis.pool.min-idle=20
# ????????????????????? # ?????????????????????
spring.redis.jedis.pool.max-wait=2000ms spring.redis.jedis.pool.max-wait=2000ms
spring.servlet.multipart.max-file-size=10Mb spring.servlet.multipart.max-file-size=30Mb
spring.servlet.multipart.enabled=true spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-request-size=50Mb spring.servlet.multipart.max-request-size=50Mb
spring.application.name=micro-gksite spring.application.name=micro-gksite
......
...@@ -4,28 +4,28 @@ spring: ...@@ -4,28 +4,28 @@ spring:
cloud: cloud:
nacos: nacos:
config: config:
server-addr: http://localhost:8848 server-addr: https://nacos.geexek.com
file-extension: properties file-extension: properties
group: dev group: dev
namespace: 0c214852-53b7-44b0-b472-427013a29ebe namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
server-addr: http://localhost:8848 server-addr: https://nacos.geexek.com
discovery: discovery:
group: dev group: dev
namespace: 0c214852-53b7-44b0-b472-427013a29ebe namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
--- ---
spring: spring:
profiles: dev profiles: dev
cloud: cloud:
nacos: nacos:
config: config:
server-addr: http://localhost:8848 server-addr: https://nacos.geexek.com
file-extension: properties file-extension: properties
group: dev group: dev
namespace: 0c214852-53b7-44b0-b472-427013a29ebe namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
server-addr: http://localhost:8848 server-addr: https://nacos.geexek.com
discovery: discovery:
group: dev group: dev
namespace: 0c214852-53b7-44b0-b472-427013a29ebe namespace: 187c2f4d-80c2-4a67-b4e5-319d5c9151d1
--- ---
spring: spring:
profiles: test profiles: test
......
...@@ -518,7 +518,8 @@ ...@@ -518,7 +518,8 @@
style="font-size: 16px;color: #ce3939;margin-top: 20px"> style="font-size: 16px;color: #ce3939;margin-top: 20px">
<span <span
style="font-size: 12px;display: inline-block;border-radius: 50%;height: 18px;width: 18px;background: #ce3939;color: white;text-align: center;">注</span> style="font-size: 12px;display: inline-block;border-radius: 50%;height: 18px;width: 18px;background: #ce3939;color: white;text-align: center;">注</span>
<span style="display: inline">建议分辨<br>率710*242</span></span></label> <span
style="display: inline">建议分辨<br>率710*242,最大上传大小5MB</span></span></label>
<div style="float: right;"> <div style="float: right;">
<div class="cover"> <div class="cover">
<span class="icon-cover"></span> <span class="icon-cover"></span>
......
...@@ -648,6 +648,21 @@ ...@@ -648,6 +648,21 @@
layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
...@@ -699,6 +714,21 @@ ...@@ -699,6 +714,21 @@
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
complete: () => { complete: () => {
setTimeout(() => { setTimeout(() => {
layer.closeAll() layer.closeAll()
......
...@@ -936,7 +936,7 @@ ...@@ -936,7 +936,7 @@
return; return;
} }
// 文档 // 文档
if (file.type && !['.docx', '.xlsx', '.pptx'].includes(file.name.slice(file.name.lastIndexOf('.'))) && this.service.type == 5) { if (file.type && !['.docx', '.pdf', '.xlsx', '.pptx'].includes(file.name.slice(file.name.lastIndexOf('.'))) && this.service.type == 5) {
layer.msg('请上传文档', { icon: 5 }) layer.msg('请上传文档', { icon: 5 })
return; return;
} }
...@@ -963,6 +963,21 @@ ...@@ -963,6 +963,21 @@
layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
...@@ -1004,6 +1019,21 @@ ...@@ -1004,6 +1019,21 @@
layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
...@@ -1044,6 +1074,21 @@ ...@@ -1044,6 +1074,21 @@
layer.error(res.msg) layer.error(res.msg)
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
......
...@@ -673,9 +673,24 @@ ...@@ -673,9 +673,24 @@
this.service.imgUrl = res.content this.service.imgUrl = res.content
this.$forceUpdate() this.$forceUpdate()
} else { } else {
layer.msg(res.msg, {icon: 2}); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
......
...@@ -81,9 +81,24 @@ function uploadFile(obj) { ...@@ -81,9 +81,24 @@ function uploadFile(obj) {
$(template).find('.save').trigger('click'); $(template).find('.save').trigger('click');
$(template).find('.save').remove(); $(template).find('.save').remove();
} else { } else {
layer.msg(res.msg, {icon: 2}); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
......
...@@ -34,9 +34,24 @@ function changeImg(e) { ...@@ -34,9 +34,24 @@ function changeImg(e) {
$(img).removeClass('add'); $(img).removeClass('add');
}, 500) }, 500)
} else { } else {
layer.msg(res.msg, {icon: 2}); layer.msg(res.msg, { icon: 2 });
} }
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
......
...@@ -169,6 +169,21 @@ function changeLogoImg(imgDomNName, inputDomName, top, left, width, height) { ...@@ -169,6 +169,21 @@ function changeLogoImg(imgDomNName, inputDomName, top, left, width, height) {
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
complete: () => { complete: () => {
setTimeout(() => { setTimeout(() => {
layer.closeAll() layer.closeAll()
......
...@@ -249,6 +249,21 @@ function uploadFile(obj) { ...@@ -249,6 +249,21 @@ function uploadFile(obj) {
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
complete: () => { complete: () => {
setTimeout(() => { setTimeout(() => {
layer.closeAll() layer.closeAll()
...@@ -267,7 +282,7 @@ function uploadImageOrDocFile(obj) { ...@@ -267,7 +282,7 @@ function uploadImageOrDocFile(obj) {
return; return;
} }
// 文档 // 文档
if (file.type && !['.docx', '.xlsx', '.pptx'].includes(file.name.slice(file.name.lastIndexOf('.'))) && openType == 5) { if (file.type && !['.docx', '.xlsx', '.pdf', '.pptx'].includes(file.name.slice(file.name.lastIndexOf('.'))) && openType == 5) {
layer.msg('请上传文档', { icon: 5 }) layer.msg('请上传文档', { icon: 5 })
return; return;
} }
...@@ -300,6 +315,22 @@ function uploadImageOrDocFile(obj) { ...@@ -300,6 +315,22 @@ function uploadImageOrDocFile(obj) {
beforeSend: () => { beforeSend: () => {
layer.load() layer.load()
}, },
error: function (jqXHR) {
// jqXHR.responseJSON 里通常是后端返回的 JSON
console.log(jqXHR)
let msg = '上传失败';
if (jqXHR.responseJSON && jqXHR.responseJSON.msg) {
msg = jqXHR.responseJSON.msg;
} else if (jqXHR.responseText) {
try {
let json = JSON.parse(jqXHR.responseText);
msg = json.msg || msg;
} catch (e) {
msg = jqXHR.responseText || msg;
}
}
layer.msg(msg, { icon: 2 });
},
complete: () => { complete: () => {
setTimeout(() => { setTimeout(() => {
layer.closeAll() layer.closeAll()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment