谨以此篇,送给那些还不会用SSM框架上传图片的小伙伴
废话不多说,直接上代码:
jsp页面展示(仅展示关键部分):
这里需要注意的是:①:请求方法必须是POST
②:需要使用组件 <input type="file" name="file">
③:表单必须设置enctype=“multipart/form-data”
<table width="100%" height="90%" border="0" cellpadding="10"
cellspacing="0" class="main_tabbor">
<tr valign="top">
<td>
<form id="documentForm" name="documentForm"
action="${pageContext.request.contextPath}/addReport.action"
enctype="multipart/form-data" method="post">
<!-- 隐藏表单,flag表示添加标记 -->
<input type="hidden" name="flag" value="2"> <input
type="hidden" name="method" value="upload">
<table width="100%" border="0" cellpadding="0" cellspacing="10"
class="main_tab">
<tr>
<td class="font3 fftd">新闻标题:<input type="text"
name="reportTitle" size="30" id="reportTitle" /></td>
</tr>
<tr>
<td class="main_tdbor"></td>
</tr>
<tr>
<td class="font3 fftd">新闻描述:<br /> <textarea
name="reportDes" cols="88" rows="11" id="reportDes"></textarea>
</td>
</tr>
<tr>
<td class="main_tdbor"></td>
</tr>
<tr>
<td class="font3 fftd">新闻图片:<br /> <input type="file"
name="attachs" id="attachs" size="30" />
</td>
</tr>
<tr>
<td class="main_tdbor"></td>
</tr>
<tr>
<td class="font3 fftd">新闻网页:<br /> <input type="file"
name="attachs" id="attachs" size="30" />
</td>
</tr>
<tr>
<td class="main_tdbor"></td>
</tr>
<tr>
<td class="font3 fftd"><input type="submit" id="btn"
value="上传"> <input type="reset" value="重置"></td>
</tr>
<tr>
<td class="main_tdbor"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
后台控制层:
@RequestMapping(value = "/addReport", method = RequestMethod.POST)
public void addReport(Report report, HttpSession session,
@RequestParam(value = "attachs", required = false) MultipartFile[] attachs, HttpServletRequest request,
HttpServletResponse response) {
// 定义上传文件的路径
String fileName;
// 定义文件保存的位置
String path = request.getSession().getServletContext().getRealPath("/upload");
// 循环读取文件信息
for (int i = 0; i < attachs.length; i++) {
MultipartFile attach = attachs[i];
if (!attach.isEmpty()) {// 判断文件是否为空
// 判断是第几个文件
if (i == 0) {
fileName = upload(path, attach);
report.setReportPicture("upload\\"+fileName);
} else if (i == 1) {
fileName = upload(path, attach);
report.setReportUrl("upload\\"+fileName);
}
}
}
Integer count = reportService.addReport(report);
if (count > 0) {
try {
response.getWriter().write("<script>alert('新增成功!');location.href='"+ request.getServletContext().getContextPath() + "/findAllReport.action';</script>");
} catch (IOException e) {
}
} else {
try {
response.getWriter().write("<script>alert('新增失败!');location.href='"+ request.getServletContext().getContextPath() + "/findAllReport.action';</script>");
} catch (IOException e) {
}
}
}
实现上传功能的代码:
/**
* 上传
* @Title: upload
* @Description: TODO
* @param @param path
* @param @param attach
* @param @return
* @return String
* @throws
*/
private String upload(String path, MultipartFile attach) {
String fileName;
File file;
//获取文件拓展名
fileName = attach.getOriginalFilename();
//新的文件名
fileName = System.currentTimeMillis()+fileName;
System.out.println(fileName);
//封装文件保存位置的全路径
file=new File(path, fileName);
if (!file.exists()) {
file.mkdirs();
}
//上传
try {
attach.transferTo(file);
} catch (IllegalStateException | IOException e) {
System.out.println("上传失败");
}
return fileName;
}
就到这里啦,service层和dao层不变…