java Web 文件上传

注意:请求实体过大的问题,请修改Nginx服务器的大小(百度参考413 Request Entity Too Large 的解决方法)
jsp:<input type="file"  style="height: 114px;width: 100%;position: absolute;opacity: 0;" name="file1" id="file1" >

$(function(){

        $("#file1").change(function(){
            //创建FormData对象
            var data = new FormData();
            //为FormData对象添加数据
            $.each($('#file1')[0].files, function(i, file) {
                     data.append('upload_file', file);
             });
            $.ajax({
                 url:'${pageContext.request.contextPath}/uploadImage',
                 type:'POST',
                 data:data,
                 cache: false,
                 contentType: false,    //不可缺
                 processData: false,    //不可缺
                 success:function(data){
                    //显示追加
                     var imgUrl="/"+data;
                     var showImg = "<div class='img-item'>" +
                             "<img src='" + imgUrl + "'>" +
                             "<span class='close-item iconfont'></span>" +
                             "</div>";
                     $("#addImg").before(showImg);
                     //数据追加
                     var inputImg = "<input type='hidden' name='postImage'value='" + imgUrl + "' >";
                     $("#typeId").after(inputImg);
                  }
             });
         });
    });

java后台部分:

 1     @RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
 2     @ResponseBody
 3     public String uploadImage(HttpServletRequest request) throws IOException {
 4         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
 5         Iterator<String> iterator = multipartRequest.getFileNames();
 6         String fileName = "";
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 8         String dir = "upload/" + sdf.format(new Date()) + "/";
 9         String realPath = request.getSession().getServletContext().getRealPath("/");
10         while(iterator.hasNext()){
11             MultipartFile multipartFile = multipartRequest.getFile(iterator.next());
12             if(multipartFile != null){
13                 String fn = multipartFile.getOriginalFilename();
14                 String suffix = fn.substring(fn.lastIndexOf("."));
15                 fileName = dir  + Utils.getRandomStringByLength(6) + suffix;
16                 String path = realPath + fileName;
17                 path = path.replace("\\", "/");
18                 File f = new File(path);
19                 if(!f.mkdirs()){
20                     f.mkdir();
21                 }
22                 multipartFile.transferTo(f);
23             }
24         }
25         return fileName;
26     }
27   //    上面方法需要用到下面的方法
28   public String getRandomStringByLength(int length) {
29         String base = "abcdefghijklmnopqrstuvwxyz0123456789";
30         Random random = new Random();
31         StringBuffer sb = new StringBuffer();
32         for (int i = 0; i < length; i++) {
33             int number = random.nextInt(base.length());
34             sb.append(base.charAt(number));
35         }
36         return sb.toString();
37     }

 

posted @ 2017-04-12 14:37  戴眼镜的蚂蚁  阅读(275)  评论(0编辑  收藏  举报