zoukankan      html  css  js  c++  java
  • jsp中的文件上传

      首先需要有以下的jar包

      jsp代码如下:

    <!-- ${pageContext.request.contextPath}为: "/" + 当前项目名   -->
        <form action="${pageContext.request.contextPath}/upLoad" method="post"  enctype="multipart/form-data">
            <p><label for="picture">图片:</label><input type="file" name="picture"/></p>
            <p><label for="picture">图片:</label><input type="file" name="picture"/></p>
            <p><input type="submit" value="上传"/></p>
        </form>

       使用文件上传必须使用POST方式进行上传,以及添加enctype属性

    控制器代码如下

    @RequestMapping(value= {"upLoad"})
        public String upLoad(@RequestParam(value="picture",required=false) MultipartFile[]  picture,
                HttpServletRequest request) {
            //获取服务器上传地址
            String path = request.getRealPath(File.separator)+"myupload";
            if(picture.length>0&&picture!=null) {
                for (MultipartFile p : picture) {
                    if (p.isEmpty()) {     
                        break;
                    }
                    //获取文件名
                    String oldFileName =p.getOriginalFilename();
                    //获取后缀
                    String suffix = oldFileName.substring(oldFileName.lastIndexOf(".")+1, oldFileName.length());
                    //设置随机名称  防止覆盖同名文件
                    String fileName = UUID.randomUUID().toString().replaceAll("-", "")+"."+suffix;
                    System.err.println(fileName);
                    //根据 路径符串,名字符串创建一个新 File实例。 
                    File targetFile = new File(path,fileName);
                    try {
                        //transferto()方法,是springmvc封装的方法,用于图片上传时,把内存中图片写入磁盘
                        p.transferTo(targetFile);  
                        System.err.println("成功!");
                        log.debug("文件上传成功");
                    }catch (Exception e) {
                        e.printStackTrace();
                        log.error("文件上传失败: "+e.getMessage());
                    }
                }
            }else {
                System.err.println("失败!");
            }
            return "success";
        }

     此时可以上传之后可以再增加一些条件,如判断文件的类型,文件夹是否存在等,如下

         if(!Arrays.asList("jpg","png","jpeg","pneg").contains(suffix)) {
                      System.out.println("图片格式错误必须是jpg,PNG,JPEG,pneg其中一种");
                     return "error";
             }
             if(!targetFile.exists()) {
                     targetFile.mkdirs();//如果路径不存在,就创建该目录
             }
  • 相关阅读:
    Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
    Educational Codeforces Round 55 (Rated for Div. 2)
    Educational Codeforces Round 55 (Rated for Div. 2) A
    洛谷 P1061 Jam的计数法
    Codeforces Round #523 (Div. 2) B Views Matter
    Codeforces Round #523 (Div. 2) C Multiplicity (DP)
    2018.11.26 QLU新生赛部分题解
    动态规划:分组背包和有依赖的背包
    动态规划:二维费用背包
    动态规划:混合背包
  • 原文地址:https://www.cnblogs.com/hfx123/p/9796670.html
Copyright © 2011-2022 走看看