最新问题是旧问题的结合小姐姐快来
@RequestMapping(value="/addproduct" ,method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> addProduct(HttpServletRequest request){
Map<String,Object> modelMap = new HashMap<String,Object>();
//验证码校正
if(!CodeUtil.checkVerifyCode(request)) {
modelMap.put("success", false);
modelMap.put("errMsg", "请输入验证码");
}
//1.获取前台传来的普通参数
String productStr = HttpServletRequestUtil.getString(request, "productStr");
ObjectMapper mapper = new ObjectMapper();
Product product = null;
try {
product = mapper.readValue(productStr, Product.class);
}catch(Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
return modelMap;
}
//2.判断有没有文件流没有就返回错
List<ImageHolder> productImageList = new ArrayList<ImageHolder>();
ImageHolder thumbnail = null;
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
//若请求中存在文件流,则取出相关的文件
try {
if (commonsMultipartResolver.isMultipart(request)) {
//获取缩略图
thumbnail = addImageHolder(thumbnail,productImageList,request);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", "上传图片不能为空");
return modelMap;
}
} catch (Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
}
//3.添加处理商品信息
if(product != null && thumbnail != null && productImageList.size()>0) {
try {
Shop currentShop = (Shop) request.getSession().getAttribute("currentShop");
product.setShop(currentShop);
ProductExecution pe = productService.addProduct(product, thumbnail, productImageList);
if (pe.getState() == ProductStateEnum.SUCCESS.getState()) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", pe.getStateInfo());
}
} catch (ProductOperationException e) {
modelMap.put("success", false);
modelMap.put("errMsg",e.toString());
return modelMap;
}
}else {
modelMap.put("success", false);
modelMap.put("errMsg","请输入商品信息");
}
return modelMap;
}
private ImageHolder addImageHolder(ImageHolder thumbnail, List<ImageHolder> productImageList,
HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("thumbnail");
//构建缩略图文件流和名字的对象
thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(),
thumbnailFile.getInputStream());
//获取详情图
for (int i = 0; i < IMAGMAXCOUNT; i++) {
CommonsMultipartFile productFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("froductImg" + i);
if (productFile != null) {
ImageHolder productImg = new ImageHolder(productFile.getOriginalFilename(),
productFile.getInputStream());
//添加详情图进List
productImageList.add(productImg);
} else {
//若取出的第i个详情图片文件流为空,则终止循环
break;
}
}
return thumbnail;
}
/**
*
*/
$(function(){
var productId = getQueryString("productId");
var isEdit = productId ? true : false;
//编辑商品
var editProductUrl = '/o2o/shopadmin/modifyproduct';
//添加商品
var addProductUrl = '/o2o/shopadmin/addproduct';
//拿到所属商品的分类 用来添加和更新
var productCategoryUrl = '/o2o/shopadmin/getproductcategory';
//根据id查找商品 用来更新
var queryProductByIdUrl = '/o2o/shopadmin/getproductbyid?productId='+productId;
getproductCategory();
//根据ID获取店铺信息
function getqueryProductById(){
$.getJSON(queryProductByIdUrl,function(data){
if(data.success){
var product = data.product;
$('#priority').val(product.priority);
$('#product-name').val(product.productName);
$('#normal-price').val(product.normalPrice);
$('#promotion-price').val(product.promotionPrice);
$('#point').val(product.point);
$('#product-desc').val(product.productDesc);
//获取原来的商品以及该店铺的所有商品类别列表
var optionHtml = '';
var optionArr = data.productCategoryList;
var optionSelected = product.productCategory.productCategoryId;
//生成前端的HTML商品类别列表,并默认选择编辑前的商品列表
optionArr.map(function(item,index){
var isSelect = optionSelected === item.productCategoryId?'selected'
: '';
optionHtml +='<option data-value ="'
+item.productCategoryId
+'"'
+isSelect
+'>'
+item.productCategoryName
+'</option>';
});
$('#category').html(optionHtml);
}
});
}
//获取该商店下的分类
function getproductCategory(){
$.getJSON(productCategoryUrl,function(data){
if(data.success){
var tempHtml = '';
data.data.map(function(item,index){
tempHtml += '<option data-id="'+item.productCategoryId+'">'+
item.productCategoryName +'</option>';
});
$('#category').html(tempHtml);
}
});
}
// 针对商品详情图控件组,若该控件组的最后一个元素发生变化(即上传了图片),
// 且控件总数未达到6个,则生成新的一个文件上传控件
$('.detail-img-div').on('change','.detail-img:last-child',function(){
if($('.detail-img').length < 6){
$('#detail-img').append('<input type="file" class="detail-img">');
}
});
//拿到表单中信息并提交
$('#submit').click(function(){
var product ={};
if(isEdit){
product.productId = productId;
}
product.productName = $('#product-name').val();
product.productCategory = {
productCategoryId : $('#category').find('option').not(
function(){
return !this.selected;
}).data('id')
};
product.priority = $('#priority').val();
product.normalPrice = $('#normal-price').val();
product.promotionPrice = $('#promotion-price').val();
product.point = $('#point').val();
product.productDesc = $('#product-desc').val();
//获取缩略图文件流
var thumbnail = $('#small-img')[0].files[0];
var formData = new FormData();
formData.append('thumbnail',thumbnail);
formData.append('productStr',JSON.stringify(product));
// 遍历商品详情图控件,获取里面的文件流
$('.detail-img').map(function(index,item){
// 判断该控件是否已选择了文件
if($('.detail-img')[index].files.length > 0){
formData.append('froductImg'+index,
$('.detail-img')[index].files[0]);
}
});
var verifyCodeActual = $('#j_captcha').val();
if(!verifyCodeActual){
$.toast('请输入验证码');
return;
}
formData.append('verifyCodeActual',verifyCodeActual);
$.ajax({
url : (isEdit ? editProductUrl : addProductUrl),
type : 'POST',
data : formData,
contentType : false,
processData : false,
cache : false,
success : function(data){
if(data.success){
$.toast('提交成功');
}else{
$.toast('提交失败');
}
$('#captcha_img').cilck();
}
});
});
})
不行加了@ResponseBody也不行 而且我用的是Eclipse 怎么指定是应用指定的本地Tomcat的配置文件 刚刚又报了超时那个错
正在回答
同学你好。这边测试你的代码,是可以提示提交失败的:
失败的原因是获取详情图失败,在执行addImageHolder方法时
由于multipartHttpServletRequest
中存储的是productImg0所以得不到此productImageList
祝学习愉快~
@RequestMapping(value="/addproduct" ,method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> addProduct(HttpServletRequest request){
Map<String,Object> modelMap = new HashMap<String,Object>();
//验证码校正
if(!CodeUtil.checkVerifyCode(request)) {
modelMap.put("success", false);
modelMap.put("errMsg", "请输入验证码");
}
//1.获取前台传来的普通参数
String productStr = HttpServletRequestUtil.getString(request, "productStr");
ObjectMapper mapper = new ObjectMapper();
Product product = null;
try {
product = mapper.readValue(productStr, Product.class);
}catch(Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
return modelMap;
}
//2.判断有没有文件流没有就返回错
List<ImageHolder> productImageList = new ArrayList<ImageHolder>();
ImageHolder thumbnail = null;
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
//若请求中存在文件流,则取出相关的文件
try {
if (commonsMultipartResolver.isMultipart(request)) {
//获取缩略图
thumbnail = addImageHolder(thumbnail,productImageList,request);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", "上传图片不能为空");
return modelMap;
}
} catch (Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
return modelMap;
}
//3.添加处理商品信息
if(product != null && thumbnail != null && productImageList.size()>0) {
try {
Shop currentShop = (Shop) request.getSession().getAttribute("currentShop");
product.setShop(currentShop);
ProductExecution pe = productService.addProduct(product, thumbnail, productImageList);
if (pe.getState() == ProductStateEnum.SUCCESS.getState()) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", pe.getStateInfo());
}
return modelMap;
} catch (ProductOperationException e) {
modelMap.put("success", false);
modelMap.put("errMsg",e.toString());
return modelMap;
}
}else {
modelMap.put("success", false);
modelMap.put("errMsg","请输入商品信息");
return modelMap;
}
}
private ImageHolder addImageHolder(ImageHolder thumbnail, List<ImageHolder> productImageList,
HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("thumbnail");
//构建缩略图文件流和名字的对象
thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(),
thumbnailFile.getInputStream());
//获取详情图
for (int i = 0; i < IMAGMAXCOUNT; i++) {
CommonsMultipartFile productFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("productImg" + i);
if (productFile != null) {
ImageHolder productImg = new ImageHolder(productFile.getOriginalFilename(),
productFile.getInputStream());
//添加详情图进List
productImageList.add(productImg);
} else {
//若取出的第i个详情图片文件流为空,则终止循环
break;
}
}
return thumbnail;
}
/**
*
*/
$(function(){
var productId = getQueryString("productId");
var isEdit = productId ? true : false;
//编辑商品
var editProductUrl = '/o2o/shopadmin/modifyproduct';
//添加商品
var addProductUrl = '/o2o/shopadmin/addproduct';
//拿到所属商品的分类 用来添加和更新
var productCategoryUrl = '/o2o/shopadmin/getproductcategory';
//根据id查找商品 用来更新
var queryProductByIdUrl = '/o2o/shopadmin/getproductbyid?productId='+productId;
getproductCategory();
//根据ID获取店铺信息
function getqueryProductById(){
$.getJSON(queryProductByIdUrl,function(data){
if(data.success){
var product = data.product;
$('#priority').val(product.priority);
$('#product-name').val(product.productName);
$('#normal-price').val(product.normalPrice);
$('#promotion-price').val(product.promotionPrice);
$('#point').val(product.point);
$('#product-desc').val(product.productDesc);
//获取原来的商品以及该店铺的所有商品类别列表
var optionHtml = '';
var optionArr = data.productCategoryList;
var optionSelected = product.productCategory.productCategoryId;
//生成前端的HTML商品类别列表,并默认选择编辑前的商品列表
optionArr.map(function(item,index){
var isSelect = optionSelected === item.productCategoryId?'selected'
: '';
optionHtml +='<option data-value ="'
+item.productCategoryId
+'"'
+isSelect
+'>'
+item.productCategoryName
+'</option>';
});
$('#category').html(optionHtml);
}
});
}
//获取该商店下的分类
function getproductCategory(){
$.getJSON(productCategoryUrl,function(data){
if(data.success){
var tempHtml = '';
data.data.map(function(item,index){
tempHtml += '<option data-id="'+item.productCategoryId+'">'+
item.productCategoryName +'</option>';
});
$('#category').html(tempHtml);
}
});
}
// 针对商品详情图控件组,若该控件组的最后一个元素发生变化(即上传了图片),
// 且控件总数未达到6个,则生成新的一个文件上传控件
$('.detail-img-div').on('change','.detail-img:last-child',function(){
if($('.detail-img').length < 6){
$('#detail-img').append('<input type="file" class="detail-img">');
}
});
//拿到表单中信息并提交
$('#submit').click(function(){
var product ={};
if(isEdit){
product.productId = productId;
}
product.productName = $('#product-name').val();
product.productCategory = {
productCategoryId : $('#category').find('option').not(
function(){
return !this.selected;
}).data('id')
};
product.priority = $('#priority').val();
product.normalPrice = $('#normal-price').val();
product.promotionPrice = $('#promotion-price').val();
product.point = $('#point').val();
product.productDesc = $('#product-desc').val();
//获取缩略图文件流
var thumbnail = $('#small-img')[0].files[0];
var formData = new FormData();
formData.append('thumbnail',thumbnail);
formData.append('productStr',JSON.stringify(product));
// 遍历商品详情图控件,获取里面的文件流
$('.detail-img').map(function(index,item){
// 判断该控件是否已选择了文件
if($('.detail-img')[index].files.length > 0){
formData.append('productImg'+index,
$('.detail-img')[index].files[0]);
}
});
var verifyCodeActual = $('#j_captcha').val();
if(!verifyCodeActual){
$.toast('请输入验证码');
return;
}
formData.append('verifyCodeActual',verifyCodeActual);
$.ajax({
url : (isEdit ? editProductUrl : addProductUrl),
type : 'POST',
data : formData,
contentType : false,
processData : false,
cache : false,
success : function(data){
if(data.success){
$.toast("提交成功!");
}else{
$.toast("提交失败!"+data.errMsg);
}
$('#captcha_img').click();
}
});
});
})
上传文件后,我在后台打断点直接报错跳过都不行!!!
不停
有毒 刚刚添加两个图片也报错
六月 16, 2019 5:30:25 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [spring-dispatcher] in context with path [/o2o] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. java.io.EOFException: Unexpected EOF read on the socket] with root cause
java.io.EOFException: Unexpected EOF read on the socket
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:734)
at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40)
at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1084)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)
at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:263)
at org.apache.coyote.Request.doRead(Request.java:581)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:344)
at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:183)
at java.io.FilterInputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:134)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:999)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:100)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142)
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1100)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:932)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
控制打印什么都没。着这个 真无语
@RequestMapping(value="/addproduct" ,method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> addProduct(HttpServletRequest request){
Map<String,Object> modelMap = new HashMap<String,Object>();
//验证码校正
if(!CodeUtil.checkVerifyCode(request)) {
modelMap.put("success", false);
modelMap.put("errMsg", "请输入验证码");
}
//1.获取前台传来的普通参数
String productStr = HttpServletRequestUtil.getString(request, "productStr");
ObjectMapper mapper = new ObjectMapper();
Product product = null;
try {
product = mapper.readValue(productStr, Product.class);
}catch(Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
return modelMap;
}
//2.判断有没有文件流没有就返回错
List<ImageHolder> productImageList = new ArrayList<ImageHolder>();
ImageHolder thumbnail = null;
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
//若请求中存在文件流,则取出相关的文件
try {
if (commonsMultipartResolver.isMultipart(request)) {
//获取缩略图
thumbnail = addImageHolder(thumbnail,productImageList,request);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", "上传图片不能为空");
return modelMap;
}
} catch (Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
return modelMap;
}
//3.添加处理商品信息
if(product != null && thumbnail != null && productImageList.size()>0) {
try {
Shop currentShop = (Shop) request.getSession().getAttribute("currentShop");
product.setShop(currentShop);
ProductExecution pe = productService.addProduct(product, thumbnail, productImageList);
if (pe.getState() == ProductStateEnum.SUCCESS.getState()) {
modelMap.put("success", true);
} else {
modelMap.put("success", false);
modelMap.put("errMsg", pe.getStateInfo());
}
return modelMap;
} catch (ProductOperationException e) {
modelMap.put("success", false);
modelMap.put("errMsg",e.toString());
return modelMap;
}
}else {
modelMap.put("success", false);
modelMap.put("errMsg","请输入商品信息");
return modelMap;
}
}
private ImageHolder addImageHolder(ImageHolder thumbnail, List<ImageHolder> productImageList,
HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("thumbnail");
//构建缩略图文件流和名字的对象
thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(),
thumbnailFile.getInputStream());
//获取详情图
for (int i = 0; i < IMAGMAXCOUNT; i++) {
CommonsMultipartFile productFile = (CommonsMultipartFile) multipartHttpServletRequest
.getFile("froductImg" + i);
if (productFile != null) {
ImageHolder productImg = new ImageHolder(productFile.getOriginalFilename(),
productFile.getInputStream());
//添加详情图进List
productImageList.add(productImg);
} else {
//若取出的第i个详情图片文件流为空,则终止循环
break;
}
}
return thumbnail;
}
我一步一步调试,确定返回true了 但是就没进 没有任何提示
java.io.EOFException: Unexpected EOF read on the socket
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:734)
at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40)
at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1084)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)
at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:263)
at org.apache.coyote.Request.doRead(Request.java:581)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:344)
at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:183)
at java.io.FilterInputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:134)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:999)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:903)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:100)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:158)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:142)
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1100)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:932)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
报错了 插入一个详情图片就报这个错 插2个没事
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星