SSM框架中图片的上传功能

谨以此篇,送给那些还不会用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层不变…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值