此方法可以用spring的form表单,多数据表的关联使用方便
注意:此方式直接拷贝无法使用,仅供个人收录
1.在Java EE项目lib下添加commons-fileupload-1.2.1包下的两个组件commons-fileupload-1.2.1.jar和commons-io-1.4.jar
2.在dispatcherServlet-servlet.xml配置文件下添加bean:
<!-- 配置上传下载 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize">
<value>2000000</value>
</property>
</bean>
3.通过controller层的方法接受jsp页面的参数(@RequestParam("imgName1") MultipartFile mFile)
例:@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@RequestParam("imgName1") MultipartFile mFile,Defect defect,
HttpServletRequest request) {
defectService.addDefect(request, mFile, defect);
return "redirect:/defect/getListBycheckInfo.do?from=2";
}
4.services实现层:
@Override
public void addDefect(HttpServletRequest request, MultipartFile mFile,
Defect defect) {
String imgName = upLoadImg(request, mFile);
if (defect.getId() > 0) {//编辑
Defect defect2 = getDefectById(defect.getId());
if (imgName.equals("")) { // 如果用户没有选择图片
defect.setImgName(defect2.getImgName());
} else {
defect.setImgName(imgName);
}
BeanUtils.copyProperties(defect, defect2,
new String[] { "defectLogs" });
getDefectDao().updateDefect(defect2);
generateLog(defect2, request);
} else {//添加
if (imgName.equals("")) { // 如果用户没有选择图片
defect.setImgName("imageName.png");
} else {
defect.setImgName(imgName);
}
getDefectDao().addDefect(defect);
}
}
public String upLoadImg(HttpServletRequest request, MultipartFile mFile) {
String realPath = request.getSession().getServletContext()
.getRealPath("/");
System.out.println("图片存储路径:" + realPath);
File uploadPath = new File(realPath + "/uploadImgs");
// 修改文件名称
String srcName = mFile.getOriginalFilename();
System.out.println("srcName:" + srcName);
srcName = srcName.toLowerCase();
String extName = "";
int pos = srcName.lastIndexOf('.');
String name = "";
if (pos != -1) {
extName = srcName.substring(pos);
name = System.nanoTime() + extName;
File filepath = new File(uploadPath, name);
uploadPath.mkdirs(); // 在当前项目目录中创建存储图片的文件夹
try {
mFile.transferTo(filepath);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}