当前位置 博文首页 > Linging_24的博客:bootstrap-fileinput的简单使用(图片上传和编
一款非常优秀的HTML5文件上传插件,支持bootstrap 3.x
和4.x版本,具有非常多的特性:多文件选择。这个插件能最简单的帮你完成文件上传功能,且使用bootstrap样式。还支持多种文件的预览,images,
text, html, video, audio,
flash。另外还支持ajax方式上传文件,可以看到上传进度。支持拖拽的方式添加和删除文件。
下载bootstrap-fileinput
参数的配置可以参考:https://blog.csdn.net/u012526194/article/details/69937741/
或者中文官网:http://www.bootstrap-fileinput.com/options.html
我使用的是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上有些没有,可以自行下载,还有一些其他的文件,在控制台会报错,自行根据提示下载。下面是我的文件目录结构:
<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>
<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