您的位置:首页 > 其它

web项目中头像的简单修改

2013-09-18 19:03 176 查看
    头像修改主要用到了文件的上传处理,首先要设置表单数据的提交方式以及数据的传输方式,上传图片在获得图片名称的同时还要将图片以数据的形式传送到服务端,创建文件的输入输出流,获取上传文件的路径,以及制定目录下的全路径,上传完后把头像更新到数据库中,核心代码如下:

    //修改头像

 public void avatar(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, IOException {

  //处理文件上传

  if(ServletFileUpload.isMultipartContent(request)){ //检查是否为multipart表单数据

      try{

        ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());

       

        List<FileItem> items = upload.parseRequest(request); //解析请求

       

        int size = items == null ? 0 : items.size();

        for(int i = 0; i < size; i++){

           FileItem item=(FileItem)items.get(i); //获取方法消息体中的每一段内容。

          

           if (item.isFormField()) {//如果是普通表单项目

               String fieldName = item.getFieldName(); //参数名

               String value = item.getString(); //参数值

              

           }else{ //文件

               String fileName = item.getName();//获得上传的文件全路径名

               //截取后缀名"aaa.bbb.png"

               String str = fileName.substring(fileName.lastIndexOf('.'));

              

               String contentType = item.getContentType();

               long sizeInBytes = item.getSize();

              

               InputStream uploadedStream = null;

               OutputStream os  = null;

               try{

                uploadedStream = item.getInputStream();

                //使用IO流操作。。。

               

                //获取Web程序根目录下指定目录的全路径名

                File basePath = new File(this.getServletContext().getRealPath("/avatar"));

               

                Acc acc = (Acc)request.getSession().getAttribute("curr_admin");

                String lname = acc.getLname();

               

                File dest = new File(basePath, lname + str);

                os = new FileOutputStream(dest);

               

                IOUtils.copy(uploadedStream, os);

               

                //把新头像地址更新到数据库

                acc.setAvatar(dest.getName());

                accDao.edit(acc);

               

                request.getSession().setAttribute("msg", "头像修改成功!");

              } catch(Exception e){

                request.getSession().setAttribute("msg", "头像修改失败!");

          e.printStackTrace();

         }finally{

                IOUtils.closeQuietly(uploadedStream);

                IOUtils.closeQuietly(os);

               }

           }

        }

      } catch(Exception e){

       e.printStackTrace();

      }

  }else{

    request.getSession().setAttribute("msg", "头像修改失败!");

  }

  

  response.sendRedirect( request.getContextPath() + "/mng/acc_avatar.jsp");

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  upload 图片 数据