• SPRINGBOOT+JS 实现上传文件夹(目录结构不变) 举个栗子


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>上传文件夹</title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
    </head>
    <body>
    <form action="/file/upload" enctype="multipart/form-data" method="post">
        <input type='file' webkitdirectory >
        <button id="upload-btn" type="button">upload</button>
    </form>
    </body>
    <th:block th:include="include :: footer" />
    <script>
        $(function () {
            var files = [];
            // 操作dom获取input的数据,多个input的话,用id获取
            $(document).ready(function(){
                $("input").change(function(){
                    files = this.files;
                });
            });
            // 绑定点击事件,ajax请求
            $("#upload-btn").click(function () {
                var formData = new FormData();
                for (var i = 0; i < files.length; i++) {
                    // "file"是后台接口的参数名
                    formData.append("file", files[i]);
                }
                $.ajax({
                    url : "/system/test/wenjianjia",
                    type : 'POST',
                    data : formData,
                    contentType : false,
                    processData : false,
                    cache : false,
                    success : function(data) {
                        console.log("成功!");
                    }
                });
            })
        })
    </script>
    
    </html>
    

     后台:

     @RequestMapping(value = "/wenjianjia", headers = "content-type=multipart/*", method = RequestMethod.POST)
        public String upload(@RequestParam("file") MultipartFile[] file) {
            for (MultipartFile mf : file) {
                File file1;
                String name = "";
                try {
                    //转换成这个对象,然后我们需要通过里面的FileItem来获得相对路径
                    CommonsMultipartFile f2 = (CommonsMultipartFile) mf;
                    name = f2.getFileItem().getName();
                    String uploadPath = configService.selectConfigByKey("sys.inspect.uploadPath");
                    file1 = new File(uploadPath + "/test/" + name);
                    file1.mkdirs();
                    file1.createNewFile();
    //springmvc封装的方法,用于图片上传时,把内存中图片写入磁盘
                    mf.transferTo(file1);
                } catch (Exception e) {
                    e.printStackTrace();
                    return "上传文件夹失败," + e.getMessage();
                }
            }
            return "上传文件夹成功";
        }

    启动类配置:

        @Bean(name = "multipartResolver")
        public MultipartResolver multipartResolver(){
            CommonsMultipartResolver resolver = new CommonsMultipartResolver();
            resolver.setDefaultEncoding("UTF-8");
            resolver.setResolveLazily(true);
            //resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
            resolver.setMaxInMemorySize(20971520);// 根据需求更换大小
            resolver.setMaxUploadSize(104857600);// 根据需求更换大小
            return resolver;
        }

    application.yml

    multipart.enabled: true
  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/licz/p/15634436.html
Copyright © 2020-2023  润新知