在做用户头像上传的时候 ,从JSP页面获取到的头像保存到数据库 ,不重新编译,JSP页面不能显示
上传图片到服务器并保存到数据库;该怎么设置,该怎么写servlet
下列是我写的代码:
package cn.com.sczkjy.Second_handPlatformOnCmpus.manager.CheckServlet;
import cn.com.sczkjy.Second_handPlatformOnCmpus.dao.UserDao;
import cn.com.sczkjy.Second_handPlatformOnCmpus.model.User;
import org.apache.commons.io.IOUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
@WebServlet(urlPatterns = "/checkProfile")
@MultipartConfig
public class checkProfile extends HttpServlet {
UserDao userDao = new UserDao();
User user;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter("id");
user = userDao.findById(id);
System.out.println(user.getLoginid());
if (user != null){
boolean result = uFileUpload(req);
if(result){
userDao.updateByPrimaryKey(user);
req.getSession().setAttribute("lsgUfile","个人信息更新成功!");
req.getSession().setAttribute("lsgUPhoto",user.getPhoto());
System.out.println(req.getSession().getAttribute("lsgUPhoto"));
resp.sendRedirect("profile");
}
}
}
public boolean uFileUpload(HttpServletRequest req){
/* 获取普通的上传组件 */
String nickName= req.getParameter("nickName");
String name= req.getParameter("name");
//获取文件上传组件
Part part;
try {
part = req.getPart("file");
//获取文件的名称
String header = part.getHeader("content-disposition");
//截取字符串获取文件名称
String headername = header.substring(header.indexOf("filename")+10, header.length()-1);
//获取文件流
InputStream put = part.getInputStream();
//获取文件的真实路径
UUID uuid = UUID.randomUUID();
String filename ="/avatar/" + uuid + "@" + headername;
//建立对拷流
FileOutputStream fos = new FileOutputStream(new File("E:\\Second-handPlatformOnCmpus\\src\\main\\webapp", filename));
IOUtils.copy(put, fos);
put.close();
fos.close();
//删除临时文件
part.delete();
// user.setPhoto(filename);
user.setNickname(nickName);
user.setName(name);
} catch (IOException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
}
return true;
}
}
存在问题是 不能图片地址可以保存到数据库 而前端不能正常显示,
上传图片最好上传到文件服务器,上传后拿到返回的文件服务器地址,将地址保存到数据库。