1.导入jar包,使用maven
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
2.Spring配置文件
<!-- SpringMVC上传文件,配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
3.代码实现
@RequestMapping(value="fileUpload", method=RequestMethod.POST)
@ResponseBody
public Object fileUpload(@RequestParam("avatar") MultipartFile file, HttpServletRequest request) {
Map<String, Object> result = new HashMap<String, Object>();
//获取存储路径
String path = request.getRealPath("/fileUpload"); //得到路径为:D:\软件安装\apache-tomcat-8.0.39\me-webapps\Forum2.0\fileUpload
// 判断上传文件的保存目录是否存在
File fileSave = new File(path);
if (!fileSave.exists() && !fileSave.isDirectory()) {
// 创建目录
fileSave.mkdir();
}
//存储图片
User user = getSessionUser(request);
String fileName = user.getUserid() + ".jpg";
try {
/*
法一:
InputStream is = file.getInputStream(); //输入流
FileOutputStream os = new FileOutputStream(path + "\\" + fileName); //输出流
int len=0;
byte[] buffer = new byte[400]; //缓冲区
while((len=is.read(buffer)) > 0) //从输入读到缓冲区
os.write(buffer, 0, len); //从缓冲区写到输出
os.close(); //关闭流
is.close(); //关闭流
*/
//法二:
BufferedInputStream in = new BufferedInputStream(file.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(path + "\\" + fileName));
int len;
while((len=in.read()) != -1) {
out.write(len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
//图片相对路径
String url = request.getContextPath() + "/fileUpload/" + fileName;
result.put("status", "OK");
result.put("url", url);
return result;
}
4.前端(示例,非实际代码)
<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上传图片</title>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="file" /> <input type="submit" value="Submit" /></form>
</body>
</html>