当前位置 博文首页 > Linging_24的博客:bootstrap-fileinput的简单使用(图片上传和编

    Linging_24的博客:bootstrap-fileinput的简单使用(图片上传和编

    作者:[db:作者] 时间:2021-06-17 15:47

    简介:

    一款非常优秀的HTML5文件上传插件,支持bootstrap 3.x
    和4.x版本,具有非常多的特性:多文件选择。这个插件能最简单的帮你完成文件上传功能,且使用bootstrap样式。还支持多种文件的预览,images,
    text, html, video, audio,
    flash。另外还支持ajax方式上传文件,可以看到上传进度。支持拖拽的方式添加和删除文件。

    一、下载bootstrap-fileinput

    下载bootstrap-fileinput

    参数的配置可以参考:https://blog.csdn.net/u012526194/article/details/69937741/
    或者中文官网:http://www.bootstrap-fileinput.com/options.html

    二、创建一个web项目,引入js、css文件

    我使用的是springbooot + thymeleaf

    <link rel="stylesheet" href="../static/bootstrap-fileinput/css/fileinput.min.css" th:href="@{/static/bootstrap-fileinput/css/fileinput.min.css}"/>
    <link rel="stylesheet" href="../static/bootstrap-fileinput/css/bootstrap.min.css" th:href="@{/static/bootstrap-fileinput/css/bootstrap.min.css}"/>
    <script src="../static/bootstrap-fileinput/js/jquery-3.3.1.min.js" th:src="@{/static/bootstrap-fileinput/js/jquery-3.3.1.min.js}"></script>
    <script src="../static/bootstrap-fileinput/js/bootstrap.min.js" th:src="@{/static/bootstrap-fileinput/js/bootstrap.min.js}"></script>
    <script src="../static/bootstrap-fileinput/js/fileinput.min.js" th:src="@{/static/bootstrap-fileinput/js/fileinput.min.js}"></script>
    <script src="../static/bootstrap-fileinput/js/zh.js" th:src="@{/static/bootstrap-fileinput/js/zh.js}"></script>
    <script src="../static/bootstrap-fileinput/js/layer.js" th:src="@{/static/bootstrap-fileinput/js/layer.js}"></script>
    

    上面的文件在boostrap-fileinput上有些没有,可以自行下载,还有一些其他的文件,在控制台会报错,自行根据提示下载。下面是我的文件目录结构:
    在这里插入图片描述

    三、编写body–上传:

    <div style="width: 900px;height: 500px;margin: auto auto;">
           <div class="container-fluid">
               <form id="form" th:action="@{/admin/uploadTest}" method="post" enctype="multipart/form-data">
                   <div class="row form-group">
                       <label class="col-md-4">图片上传:</label>
                       <div class="col-sm-12">
                           <input id="input-id" name="file" multiple="multiple" th:multiple="multiple" type="file" data-show-caption="true"/>
                       </div>
                   </div>
               </form>
           </div>
      </div>
    

    四、编写js–上传:

    <script>
        $(function () {
            initFileInput("input-id");
        });
        function initFileInput(ctrlName) {
            var control = $('#' + ctrlName);
            control.fileinput({
                language: 'zh', //设置语言
                uploadUrl: "/admin/uploadTest", //上传的地址
                allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后缀
                uploadAsync: false, //默认异步上传,这里如果不是异步上传,多个图片一次性提交到后台,只发一次请求,如果为异步上传,每张图片都会发一次请求,多次请求
                showUpload: true, //是否显示上传按钮
                showRemove : true, //显示移除按钮
                showPreview : true, //是否显示预览
                showCaption: false,//是否显示标题
                browseClass: "btn btn-primary", //按钮样式
                maxFileCount: 3, //允许同时上传的最大文件个数
                enctype: 'multipart/form-data',
                validateInitialCount:true,
                msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
                layoutTemplates :{
                    // actionDelete:'', //去除上传预览的缩略图中的删除图标
                    // actionUpload:'',//去除上传预览缩略图中的上传图片;
                    // actionZoom:'',   //去除上传预览缩略图详情的图标
                    // actionDownload:'' //去除上传预览缩略图中的下载图标
                },
                uploadExtraData:function () {   //向后台传递的附带参数
                    var data = {
                        id:"10000",
                        msg:"这里可以添加参数"
                    }
                    return data;
                }
            }).on('filebatchuploadsuccess', function(event, data, previewId, index) {     //上传中
                //console.log(data);
                console.log('文件正在上传');
            }).on("filebatchuploadsuccess", function (event, data, previewId, index) {    //一个文件上传成功
                var form = data.form, files = data.files, extra = data.extra,
                    response = data.response, reader = data.reader;
                console.log(response);//打印出返回的json
                console.log(response.status);//打印出状态
            }).on('filebatchuploaderror', function(event, data, msg) {  //一个文件上传失败
                console.log('文件上传失败!'+data.status);
            })
        }
    </script>
    

    五、编写后端–上传:

    	//上传图片后端接收
    	@PostMapping("/admin/uploadTest")
        public @ResponseBody Map<String,Object> uploadTest(@RequestParam("file")MultipartFile[] files, HttpServletRequest request){
            MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
            MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
            Map<String, String[]> parameterMap = multipartRequest.getParameterMap();    //获取前端传过来的参数
            Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
            System.out.println("前端传过来的参数:------------");
            for (Map.Entry<String, String[]> entry : entries) {
                String key = entry.getKey();    //key是字符串
                String[] value = entry.getValue();  //value是字符串数组
                System.out.println(key+":"+ Arrays.toString(value));
            }
            System.out.println("文件的个数:"+files.length);
    
            System.out.println("打印文件的名字:--------------");
            for (MultipartFile file : files) {
                System.out.println