81,092
社区成员
发帖
与我相关
我的任务
分享
<div class="upload_img_pop" style="display: none;">
<div class="upload_head">选择合适的图片上传</div>
<div class="upload_body">
<div class='clearbox' style="vertical-align:middle;">
<img alt="" src="/img/common/select_img.png" id="upload_img" style="cursor:pointer;float:left;">
<span class="" style='display:inline-block;line-height:47px;float:left;'>上传图片格式为 <span>jpg、png</span>格式,图片不得大于<span class="fileMax"></span>MB</span>
</div>
<div class="canvas"></div>
<input type="file" id="uploadImgLinkage" style="display:none;" accept="image/jpeg,image/png"/>
<input type="hidden" id="fileId">
</div>
<div class="upload_footer clearfix" style="width:80%;">
<a class="btn_close confirm_btn imgHidden">取消</a>
<a class="btn_close confirm_btn imgConfirm">确认</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#upload_img").click(function(){
$("#uploadImgLinkage").click();
});
$("#uploadImgLinkage").change(function(){
var r = null;
if(window.XMLHttpRequest){
r = new XMLHttpRequest();
}else if(window.ActiveXObject){
r = new ActiveXObject("Microsoft.XMLHttp");
};
/*******************************************回调函数*******************************************/
r.onreadystatechange = function(){
if(r.readyState == 4){
$("#uploadImgLinkage").val("");
/*--------------------------1,状态码 200 执行成功--------------------------*/
if(r.status == 200){
var results = r.responseText;
$(".canvas").empty();
var result = eval("("+results+")");
if(result.success == true){
$(".canvas").append('<img id="targetImg" src="' + result.imgUrl+""+'"/>');
}else{
alert( (result.code == null ? "" : result.code) + " " + result.msg);
}
}else{
alert("上传失败,请重新尝试!图片最大只能上传" + $("#maxFile").val() + "MB!");
};
};
}
r.open("post", "/upload/image" , true);
var data = new FormData();
data.append("imgUpload" , selectId('uploadImgLinkage').files[0]);
data.append("uploadTable" , $("#imgTable").val());
r.send(data);
});
//上传图片弹出框
$(".upload_img").click(function(){
//获取 fileId
$("#fileId").val($(this).attr("fileId"));
$(".fileMax").text($("#maxFile").val());
//清空图片栏
$(".canvas").empty();
$(".upload_img_pop").show();
});
//弹出框-取消
$(".imgHidden").click(function(){
$(".upload_img_pop").hide();
});
//确定-保存图片
$(".imgConfirm").click(function(){
$(".uploadfy_img_" + $("#fileId").val()).attr("src" , $("#targetImg").attr("src"));
//隐藏弹出框
$(".upload_img_pop").hide();
});
});
function selectId(id){return document.getElementById(id);};
</script>
@Controller
@RequestMapping("/upload/")
public class UploadImageController {
@RequestMapping(value = "image" , method = {RequestMethod.POST , RequestMethod.GET})
@ResponseBody
public Map<String,Object> doUploadImage(@RequestParam("imgUpload") MultipartFile file ,
@RequestParam(value = "uploadTable" , required = false)String uploadTable ){
Map<String,Object> result = new HashMap<String,Object>();
try {
//上传图片
String name = this.aliyunUtils.uploadFile(file, uploadTable+"/"+NameUtils.getDisposeUUID() + "." + ImageTypeUtils.getExtName(file.getOriginalFilename()));
this.uploadServiceCRU.doSaveImg(name, uploadTable);
result.put("success", true);
result.put("imgUrl", constantIP.getImgIp() + name);
} catch (Exception e) {
logger.error(e.getMessage(),e);
result.put("success", false);
result.put("code", "500");
result.put("mgs", "图片存储失败,请重新尝试");
}
return result;
}
}
- 触发请求:[/upload/image]时系统出现异常,异常类型:系统异常,异常信息:The current request is not a multipart request
10:07:45.557 [http-nio-30161-exec-5] ERROR c.u.y.w.e.h.SystemExceptionHandler:52 - org.springframework.web.multipart.MultipartException: The current request is not a multipart request
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.assertIsMultipartRequest(RequestParamMethodArgumentResolver.java:216)
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:167)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:90)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:99)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.jav
@Controller
@RequestMapping("/upload/")
public class UploadImageController {
@RequestMapping(value = "image", method = { RequestMethod.POST })
@ResponseBody
public Map<String, Object> doUploadImage(HttpServletRequest request) {
Map<String, Object> result = new HashMap<String, Object>();
if (request instanceof MultipartHttpServletRequest) {
try {
MultipartFile file = (MultipartFile) ((MultipartHttpServletRequest) request).getFiles("imgUpload");
System.out.println(file);
String uploadTable = request.getParameter("uploadTable");
System.out.println(uploadTable);
// 上传图片
String name = this.aliyunUtils.uploadFile(file, uploadTable + "/" + NameUtils.getDisposeUUID() + "."
+ ImageTypeUtils.getExtName(file.getOriginalFilename()));
this.uploadServiceCRU.doSaveImg(name, uploadTable);
result.put("success", true);
result.put("imgUrl", constantIP.getImgIp() + name);
} catch (Exception e) {
logger.error(e.getMessage(), e);
result.put("success", false);
result.put("code", "500");
result.put("mgs", "图片存储失败,请重新尝试");
}
return result;
}
return result;
}
}
然后报错
11:12:07.589 [http-nio-30161-exec-1] DEBUG o.s.b.c.w.OrderedRequestContextFilter:114 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@3b0650f0
11:12:07.608 [http-nio-30161-exec-1] DEBUG o.s.b.a.e.mvc.EndpointHandlerMapping:301 - Looking up handler method for path /upload/image
11:12:07.611 [http-nio-30161-exec-1] DEBUG o.s.b.a.e.mvc.EndpointHandlerMapping:311 - Did not find handler method for [/upload/image]
11:12:07.622 [http-nio-30161-exec-1] ERROR c.u.y.w.c.u.UploadImageController:87 - java.util.Collections$EmptyList cannot be cast to org.springframework.web.multipart.MultipartFile
java.lang.ClassCastException: java.util.Collections$EmptyList cannot be cast to org.springframework.web.multipart.MultipartFile
at com.utouu.ym.web.controller.upload.UploadImageController.doUploadImage(UploadImageController.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:237)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:112)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
DEBUG o.s.b.c.w.OrderedRequestContextFilter:104 - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@3b0650f0
我看了一应该是
MultipartFile file = (MultipartFile) ((MultipartHttpServletRequest) request).getFiles("imgUpload");
这写的有问题,可是request.getParameter返回的是String啊,我需要一个MultipartFile。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- maxUploadSize:文件上传的最大值以byte为单位 -->
<property name="maxUploadSize" value="1024000"></property>
</bean>