使用smartupload完成JSP中图片上传存储

使用smartupload,需要准备前提:
smartupload.jar包
 
构建思路:
1、页面头像功能实现(上传、显示、更新图片)
2、数据库存储图片地址
3、为了避免图片名字重复,采用指定格式生成有效图片名称地址
 
Servlet类

SmartuploadServlet.java

public void processRequest(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
     String url="showpage.jsp";
  SmartUpload smart = new SmartUpload() ;
  ServletConfig config = getServletConfig();
  try {
  smart.initialize(config, request, response);// 初始化上传操作
  smart.upload() ;   // 上传准备
  IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr()) ; // 取得客户端的IP地址
  String ext = smart.getFiles().getFile(0).getFileExt() ; // 扩展名称
  String fileName = its.getIPTimeRand() + "." + ext ;
  String  savePath = "images";
  smart.getFiles().getFile(0).saveAs(savePath+java.io.File.separator + fileName);
  //out.print(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator + fileName);
  String filepath = savePath+"/" + fileName;
  //request.setAttribute("path", filepath);
  HttpSession session = request.getSession();
  Dao dao = new DaoJDBCImpl();
  String imgid=(String)session.getAttribute("id");
  Image image = new Image(imgid,filepath);
  Image id = dao.findByimgid(imgid);
  if(id==null){
  dao.addimg(image);
  }else{
  dao.update(image);
  }
  String path =dao.findByimgid(imgid).getImgpath();
  session.setAttribute("imgpath", path);
  } catch (Exception e) {
   System.out.println("Unable to upload the file.
");
   System.out.println("Error : " +  e.toString());
  }
   RequestDispatcher dis = request.getRequestDispatcher(url);
     dis.forward(request, response);
 }
----------------------------------------------------------------------------
 
IPTimeStamp类(使用IP地址和有效时间生成图片名称)
 
public class IPTimeStamp {
 private SimpleDateFormat sdf = null ;
 private String ip = null ;
 public IPTimeStamp(){
 }
 public IPTimeStamp(String ip){
  this.ip = ip ;
 }
 public String getIPTimeRand(){
  StringBuffer buf = new StringBuffer() ;
  if(this.ip != null){
   String s[] = this.ip.split("\\.") ;
   for(int i=0;i
    buf.append(this.addZero(s[i],3)) ;
   }
  }
  buf.append(this.getTimeStamp()) ;
  Random r = new Random() ;
  for(int i=0;i<3;i++){
   buf.append(r.nextInt(10)) ;
  }
  return buf.toString() ;
 }
 public String getDate(){
  this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;
  return this.sdf.format(new Date()) ;
 }
 public String getTimeStamp(){
  this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ;
  return this.sdf.format(new Date()) ;
 }
 private String addZero(String str,int len){
  StringBuffer s = new StringBuffer() ;
  s.append(str) ;
  while(s.length() < len){
   s.insert(0,"0") ;
  }
  return s.toString() ;
 }
 public static void main(String args[]){
  System.out.println(new IPTimeStamp("192.168.1.1").getIPTimeRand()) ;
 }
}
----------------------------------------------------------------------------
上传或替换头像图片的HTML页面


jsp页面获取session封装的图片路径信息


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值