前端要求如图所示

解决方案 »

  1.   


    req.setCharacterEncoding("utf-8");
              resp.setCharacterEncoding("utf-8");
              resp.setContentType("text/html;charset=utf-8");
              //2、创建out对象,输出
              PrintWriter out = resp.getWriter();
              //3、将文件域对象上传的文件转换成part对象
              Part part = req.getPart("upfile");
              //4、生成一个全新的文件名(后缀名要和源文件一样)
              //   ① 生成年月日时分秒的字符串
              SimpleDateFormat sdf =
                       new SimpleDateFormat("yyyyMMddHHmmss");
              String name = sdf.format(new Date());
              //   ② 获取源文件的名字 微信图片_20170706112908.jpg
              String old_name = part.getSubmittedFileName();
              //   ③ 获取源文件的后缀名 
              String suffix = old_name.substring
                                 (old_name.lastIndexOf("."));
              //   ④ 将新名字name和后缀名suffix合并=新的文件名
              String new_name = name+suffix;
              
              //5、存储文件
              //   ① 文件夹的物理路径
              String path = "E://TR1807";
              //   ② 将String转换成File对象
              File file = new File(path);
              //   ③ 判断文件夹是否存在,不存在则新建
              if(!file.exists()) {
                  //文件夹不存在,创建文件夹
                  file.mkdirs();
              }
              //   ④ 组合存储的物理路径   path+新的文件名
              path = path+"/"+new_name;
              
              //   ⑤ 写入物理路径
              part.write(path);
              
              //6、打印结果
              out.print("上传成功,实际存储路径<p>"+path+"</p>");
              out.print("<br><img src='"+new_name+"'>");
              //物理路径   WebContent
              
              String root = req.getServletContext().getRealPath("/");
              System.out.println("根目录对应的物理路径:"+root);          //打印文件的相关信息
              System.out.print("上传文件的大小:"+part.getSize());
              System.out.print("源文件名字:"+part.getSubmittedFileName());
      

  2.   

    百度“jquery 文件上传插件”有很多。界面样式可以自己写啦,就一个宽度高度固定的div,边框是灰色,中间再搞个+的图片,给div绑定点击事件,点击的时候调用插件上传图片就行。