zoukankan      html  css  js  c++  java
  • java Web 文件上传

    注意:请求实体过大的问题,请修改Nginx服务器的大小(百度参考413 Request Entity Too Large 的解决方法)
    jsp:<input type="file"  style="height: 114px; 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     }
  • 相关阅读:
    大规模分布式存储系统笔记一二章 概述与单机存储系统
    Apache Avro总结
    可汗学院公开课统计学笔记 第11到16集 样本 总体 方差 标准差 诸方差公式
    可汗学院公开课统计学笔记 第1到10集 均值 中位数 众数 极差 统计图
    Mock、Powermock使用汇总
    如何解决NoSuchMethodError
    2019年我看手机之华为篇
    活着
    log4j使用指北
    关于Eclipse导入maven项目报空指针异常
  • 原文地址:https://www.cnblogs.com/dwb91/p/6699110.html
Copyright © 2011-2022 走看看