目录
需求
在修改商品页面,添加图片上传功能
springmvc中对多部件类型解析
在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。
在springmvc.xml中配置multipart类型解析器。
加入上传图片的jar
上边的解析内部使用下边的jar进行图片上传。
创建图片虚拟 目录 存储图片
通过图形界面配置:
也可以直接修改tomcat的配置:
在conf/server.xml文件,添加虚拟 目录 :
注意:在图片虚拟目录 中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。
上传图片代码
页面
controller方法
修改:商品修改controller方法:
多文件上传的两种方式
生成uuid
import java.util.UUID;
public class CommonUtils {
//生成一个大写的uuid的字符转
public static String uuid() {
return UUID.randomUUID().toString().replace("-","").toUpperCase();
}
}
方式一通过数组接受
@Controller
@RequestMapping("/SuggestMsg")
public class SuggestMsg {
@Autowired
private ReportInfoService ris;
//提交反馈 传入用户id 视频 视频名称 将视频名称用逗号分隔 合并存放到数据库
@RequestMapping(params={"type=1"})
@ResponseBody
public Map<String, Object> suggestSubmit(String content,@RequestParam MultipartFile[] files,HttpServletRequest request,String uid) {
MultipartFile file=null;
StringBuffer sb = new StringBuffer();
if (files!=null&&files.length!=0) {
System.out.println(files.length);
for (int i = 0; i < files.length; i++) {
file = files[i];
sb = saveFile(file,request,sb);
}
}
Map<String, Object> map = ris.suggestSubmit(content,uid,sb.toString());
return map;
}
private StringBuffer saveFile(MultipartFile file, HttpServletRequest request, StringBuffer sb) {
// TODO Auto-generated method stub
try {
if (!file.isEmpty()) {
//String pic_path = "d:\\Users\\Administrator\\Desktop\\mm\\20191009\\img\\";
String pic_path = ConfigUtil.getConfigValue("SUGGEST_IMG");
String originName = file.getOriginalFilename();
String newName = CommonUtils.uuid() + originName.substring(originName.lastIndexOf("."));
System.out.println(newName);
File newFile = new File(pic_path+newName);
file.transferTo(newFile);
sb.append(newName).append(",");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb;
}
方式二、转换成把request强转成MultipartHttpServletRequest 获取一个列表
package com.pbl.msg;
import static org.hamcrest.CoreMatchers.nullValue;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.pbl.entity.ReportInfo;
import com.pbl.finalconstant.ConstantState;
import com.pbl.logic.ReportInfoService;
import com.pbl.utils.CommonUtils;
import com.pbl.utils.ConfigUtil;
@Controller
@RequestMapping("/SuggestMsg")
public class SuggestMsg1 {
@Autowired
private ReportInfoService ris;
//提交反馈 传入用户id 视频 视频名称 将视频名称用逗号分隔 合并存放到数据库 @RequestParam(value="files",required=false) MultipartFile[] files,
@RequestMapping(params={"type=1"})
@ResponseBody
public Map<String, Object> suggestSubmit(String content, HttpServletRequest request, String uid) {
System.out.println("xxx");
// 转为MultipartHttpRequest
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件
List<MultipartFile> files = multipartRequest.getFiles("files");
MultipartFile file = null;
StringBuffer sb = new StringBuffer();
if (files != null && files.size() != 0) {
System.out.println(files.size());
for (int i = 0; i < files.size(); i++) {
file = files.get(i);
sb = saveFile(file, request, sb);
}
}
Map<String, Object> map = ris.suggestSubmit(content, uid, sb.toString());
return map;
}
private StringBuffer saveFile(MultipartFile file, HttpServletRequest request, StringBuffer sb) {
// TODO Auto-generated method stub
try {
if (!file.isEmpty()) {
//String pic_path = "d:\\Users\\Administrator\\Desktop\\mm\\20191009\\img\\";
String pic_path = ConfigUtil.getConfigValue("SUGGEST_IMG");
String originName = file.getOriginalFilename();
String newName = CommonUtils.uuid() + originName.substring(originName.lastIndexOf("."));
System.out.println(newName);
File newFile = new File(pic_path+newName);
file.transferTo(newFile);
sb.append(newName).append(",");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb;
}
}