• 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
  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/licz/p/15634436.html
Copyright © 2020-2023  润新知