springMVC上传图片的一些要点

1、在jsp的form表单中加入一个属性enctype="multipart/form-data",body中的代码具体如下:

<body>
    <!--上传图片必须要有:enctype="multipart/form-data" -->
   <form action="addNewsWithPicture" method="post" enctype="multipart/form-data">
        新闻标题:<input name="title"/><br/> <br/>
        新闻内容:<textarea rows="7" cols="30" name="content"></textarea><br/>
        新闻时间:<input name="buildDate"  
          onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"
readonly="readonly" />
<br/>
<!--上传图片为的type为file,name的值要和
@RequestParam(value = "picFile", required = false)中的value值相等 -->
 图 &nbsp;&nbsp;片1:<input type="file" name="picFile"/> <br/>
 图&nbsp;&nbsp;片 2:<input type="file" name="picFile"/> 
 <font color="red">${uploadFileError}</font>
 <br/>
        <input type="submit" value="添加新闻"/> <br/>
     </form>

</body>

2、controller中的方法

// 添加图片
@RequestMapping("/addNewsWithPicture")
public String addNewsWithPicture(NewsInfo newsInfo, HttpServletRequest request,
@RequestParam(value = "
picFile", required = false)
        MultipartFile[] picFiles) {
// 固定代码开始-----------------------
String viewName = "
addNews";//这里为添加界面jsp的名字
String fileName = null;
for (int i = 0; i < picFiles.length; i++) {
MultipartFile picFile = picFiles[i];
// 判断文件是否为空
if (!picFile.isEmpty()) {
String path = request.getSession().getServletContext()
.getRealPath("statics" + File.separator + "uploadfiles");
String oldFileName = picFile.getOriginalFilename();// 获取文件的原名字


String prefix = FilenameUtils.getExtension(oldFileName);// 原文件后缀
int filesize = 5000000;
if (picFile.getSize() > filesize) {// 上传大小不得超过 500k
request.setAttribute("uploadFileError", " * 上传大小不得超过 500k");
// 超过大小不允许跳转,直接返回以前的视图页面
return viewName;
} else if (prefix.equalsIgnoreCase("jpg") || prefix.equalsIgnoreCase("png")
|| prefix.equalsIgnoreCase("gif") || prefix.equalsIgnoreCase("jpeg")) {// 上传图片格式不正确
fileName = "head_" + System.currentTimeMillis() + RandomUtils.nextInt(1000000) + "." + prefix;
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
// 保存
try {
picFile.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("uploadFileError", " * 上传失败!");
return viewName;
}
} else {
request.setAttribute("uploadFileError", " * 上传图片格式不正确");
return viewName;
}


if (i == 0) {
                    newsInfo.setPicName(fileName);
} else if (i == 1) {
                    newsInfo.setImgName(fileName);
}
}


} // 固定代码结束----------------------------------
          if(newsService.insertSelective(newsInfo)>0){
          return "redirect:showNewsList";
          }
return viewName;
}

猜你喜欢

转载自blog.csdn.net/qq_40434646/article/details/80890510