JavaWeb上传图片到服务器,存储到数据库,并在页面显示
Servlet
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
//上传到服务器的存放路径
String uploadFilePath = req.getSession().getServletContext().getRealPath("upload/");
//判断上传的数据是不是多段数据
if (isMultipart) {
//创建工厂实现类
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建临时文件目录
File tempPath = new File("E://abc");
//设置临时文件存放的路径
factory.setRepository(tempPath);
//设置缓冲区大小
factory.setSizeThreshold(10240);
//用于解析上传数据的工具类ServletFileUpload
ServletFileUpload upload = new ServletFileUpload(factory);
//设置单个文件最大值
upload.setSizeMax(61440000);
//初始化为空
String username = null;
String phone = null;
String sex = null;
String name = null;
String place = null;
String hometown = null;
String headimgpath = null;
//调用解析方法
try {
//定义一个集合 接受上传的所有请求参数
List<FileItem> list = upload.parseRequest(req);
//循环判断,每一个表单项,是普通类型,还是上传的文件
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
//普通表单项
String filedName = fileItem.getFieldName();
if (filedName.equals("username")) {
username = fileItem.getString("UTF-8");
} else if (filedName.equals("phone")) {
phone = fileItem.getString("UTF-8");
} else if (filedName.equals("truename")) {
name = fileItem.getString("UTF-8");
} else if (filedName.equals("sex")) {
sex = fileItem.getString("UTF-8");
} else if (filedName.equals("place")) {
place = fileItem.getString("UTF-8");
} else if (filedName.equals("hometown")) {
hometown = fileItem.getString("UTF-8");
}
} else {
//上传的图片,获取到文件名
headimgpath = fileItem.getName();
if (headimgpath != null && !headimgpath.equals("")) {
String str = headimgpath.substring(headimgpath.lastIndexOf(".") + 1);
//判断图片类型
if ("png".equals(str) || "jpg".equals(str)) {
//保存到服务器
File saveFile = new File(uploadFilePath, headimgpath);
fileItem.write(saveFile);
out.println("图片上传成功");
} else {
return;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
//拿到LoginServlet中保存到session中的已经登录的user
User user = (User) req.getSession().getAttribute("user");
//创建UserInfo对象
UserInfo userInfo = new UserInfo(null, username, phone, name, sex, place, hometown, headimgpath);
// 调用 userService的方法处理业务
boolean flag = userService.UpdateUserInfo(userInfo, user);
if(flag){
//req.setAttribute("AddSuccess","success");
req.getRequestDispatcher("QueryStoreTypeShowServlet").forward(req,resp);
}else{
// req.setAttribute("AddError","error");
req.getRequestDispatcher("updateinfo.jsp").forward(req,resp);
}
}
}
将图片路径存放到数据库
serviceImpl:
@Override
public boolean UpdateUserInfo(UserInfo userinfo, User user) {
return userDao.UpdateUserInfo(userinfo,user);
}
service层:
/**
* 修改个人信息
*/
public boolean UpdateUserInfo(UserInfo userinfo, User user);
dao层:
/**
* 修改账户个人信息
*/
public boolean UpdateUserInfo(UserInfo userinfo,User user);
daoImpl:
@Override
public boolean UpdateUserInfo(UserInfo userinfo,User user) {
QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
String sql = "update userinfo set username=?,phone=?,name=?,sex=?,place=?,hometown=?,headimgpath=? where usernum =(select userid from t_user where email=?)";
Object[] objects = {
userinfo.getUsername(),userinfo.getPhone(),userinfo.getName(),userinfo.getSex(),userinfo.getPlace(),userinfo.getHometown(),userinfo.getHeadimgpath(),
user.getEmail()
};
try {
int count = runner.update(sql,objects);
if(count>0){
return true;
}else{
return false;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
前端显示头像
<span class="item_name" style="width:120px;">头 像</span>
<img src="upload/${requestScope.userInfo.headimgpath}"width="60" height="60" name="headimg">