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