当前位置: 首页 > article >正文

bootstrap fileupload插件实现文件上传与前端回显图片

页面集成 bootstrap fileupload

  • 1.下载插件依赖
  • 2.插件引入
  • 3.构造fileupload控件
  • 4.初始化控件
  • 5.完整html代码
  • 6.java文件处理
  • 7.spring boot 配置虚拟路径映射
  • 8.插件集成效果


图片来源百度图库


Hi,I’am EverdayForCode. Had you learnt today!

1.下载插件依赖

bootstrap_fileupload插件依赖bootstrap,在引入插件的同时也需要引入bootstrap。

bootstrap:点击下载
bootstrap_fileupload:点击下载

2.插件引入

    <link href="../../static/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /><link href="../../static/lib/btsp-fileinput/css/fileinput.min.css" rel="stylesheet" type="text/css" /><link href="../../static/lib/btsp-fileinput/css/fileinput-rtl.min.css" rel="stylesheet" type="text/css" /><script src="../../static/js/jquery-3.1.1.min.js"></script><script type="text/javascript" src="../../static/lib/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="../../static/lib/btsp-fileinput/js/fileinput.min.js"></script><script type="text/javascript" src="../../static/lib/btsp-fileinput/js/locales/zh.js"></script>

值得注意的是: fileupload也依赖jQuery,在引入fileupload前应该先引入jQuery。

3.构造fileupload控件

<!--图片回显区域-->
<div class="pic_display">
</div><!--控件-->
<div class="container-fluid"><form id="form" action="upload/insert" 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 type="file" data-show-caption="true"></div></div></form></div>

4.初始化控件

<script type="text/javascript">function initFileInput(ctrlName) {var control = $('#' + ctrlName);control.fileinput({language: 'zh', //设置语言uploadUrl: "http://resource.natapp1.cc/upload_file", //上传的地址allowedFileExtensions: ['jpg', 'gif', 'png','mp4'],//接收的文件后缀//uploadExtraData:{"id": 1, "fileName":'123.mp3'},uploadAsync: false, //默认异步上传showUpload: true, //是否显示上传按钮showRemove : true, //显示移除按钮showPreview : true, //是否显示预览showCaption: true,//是否显示标题browseClass: "btn btn-primary", //按钮样式dropZoneEnabled: true,//是否显示拖拽区域minImageWidth: 50, //图片的最小宽度minImageHeight: 50,//图片的最小高度maxImageWidth: 1000,//图片的最大宽度maxImageHeight: 1000,//图片的最大高度maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小minFileCount: 0,maxFileCount: 10, //表示允许同时上传的最大文件个数enctype: 'multipart/form-data',validateInitialCount:true,previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",window:true,uploadExtraData: function(previewId, index) {   //额外参数的关键点,没有额外参数可以注释掉data = {uId:uId}return data;}}).on('filepreupload', function(event, data, previewId, index) {     //一个上传中处理函数var form = data.form, files = data.files, extra = data.extra,response = data.response, reader = data.reader;console.log('文件正在上传');}).on("fileuploaded", function (event, data, previewId, index) {    //一个文件完成处理函数//后端下载数据成功后返回前端文件路径,前端解析路径进行文件回显(图片可使用img标签,视频可以使用视频播放插件,这里演示的是图片回显)var htmlStr = ''htmlStr +=  '<img class="fileUrls" src="'+data.response.data+'" alt="">';$(".pic_display").append(htmlStr);console.log('文件上传成功+++++!'+data);}).on('fileerror', function(event, data, msg) {  //一个文件上传失败处理函数console.log('文件上传失败!'+data.id);})}$(function () {initFileInput("input-id");})
</script>

5.完整html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link href="../../static/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" /><link href="../../static/lib/btsp-fileinput/css/fileinput.min.css" rel="stylesheet" type="text/css" /><link href="../../static/lib/btsp-fileinput/css/fileinput-rtl.min.css" rel="stylesheet" type="text/css" /><script src="../../static/js/jquery-3.1.1.min.js"></script><script type="text/javascript" src="../../static/lib/bootstrap/js/bootstrap.min.js"></script><script type="text/javascript" src="../../static/lib/btsp-fileinput/js/fileinput.min.js"></script><script type="text/javascript" src="../../static/lib/btsp-fileinput/js/locales/zh.js"></script><title>fileload</title><style>.pic_display img{width: 100%;}</style>
</head>
<body>
<div><!--图片回显区域--><div class="pic_display"></div><!--控件--><div class="container-fluid"><form id="form" action="http://resource.natapp1.cc/upload_file" 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 type="file" data-show-caption="true"></div></div></form></div>
</div>
<script type="text/javascript">function initFileInput(ctrlName) {var control = $('#' + ctrlName);control.fileinput({language: 'zh', //设置语言uploadUrl: "http://resource.natapp1.cc/upload_file", //上传的地址allowedFileExtensions: ['jpg', 'gif', 'png','mp4'],//接收的文件后缀//uploadExtraData:{"id": 1, "fileName":'123.mp3'},uploadAsync: false, //默认异步上传showUpload: true, //是否显示上传按钮showRemove : true, //显示移除按钮showPreview : true, //是否显示预览showCaption: true,//是否显示标题browseClass: "btn btn-primary", //按钮样式dropZoneEnabled: true,//是否显示拖拽区域minImageWidth: 50, //图片的最小宽度minImageHeight: 50,//图片的最小高度maxImageWidth: 1000,//图片的最大宽度maxImageHeight: 1000,//图片的最大高度maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小minFileCount: 0,maxFileCount: 10, //表示允许同时上传的最大文件个数enctype: 'multipart/form-data',validateInitialCount:true,previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",window:true,uploadExtraData: function(previewId, index) {   //额外参数的关键点,没有额外参数可以注释掉data = {//uId:uId}return data;}}).on('filepreupload', function(event, data, previewId, index) {     //一个上传中处理函数var form = data.form, files = data.files, extra = data.extra,response = data.response, reader = data.reader;console.log('文件正在上传');}).on("fileuploaded", function (event, data, previewId, index) {    //一个文件完成处理函数//后端下载数据成功后返回前端文件路径,前端解析路径进行文件回显(图片可使用img标签,视频可以使用视频播放插件,这里演示的是图片回显)var htmlStr = ''htmlStr +=  '<img class="fileUrls" src="'+data.response.data+'" alt="">';$(".pic_display").append(htmlStr);console.log('文件上传成功+++++!'+data);}).on('fileerror', function(event, data, msg) {  //一个文件上传失败处理函数console.log('文件上传失败!'+data.id);})}$(function () {initFileInput("input-id");})
</script>
</body>
</html>

6.java文件处理

public class FileUtil {private static String filePath = "D:\\test";public static Map<String,String> upload(MultipartFile file) {Map<String,String> map = new HashMap<String ,String>();//获取文件后缀名String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));log.info("后缀名" + suffix);//随机生成上传文件名String randomFileName = ""+ UUID.randomUUID();String path = filePath + "\\" + randomFileName +suffix;String fileName = randomFileName+suffix;File dest = new File(path);map.put("path",path);map.put("fileName",fileName);//上传文件if (!dest.getParentFile().exists()) {dest.getParentFile().mkdirs();}try {file.transferTo(dest);} catch (IOException e) {e.printStackTrace();}return map;}
}

对应的controller我就不在写了,核心是文件处理类
值得注意:
后端不能直接返回磁盘的真实路径,这样会被浏览器拦截导致无法访问资源。应该做一下磁盘路径的虚拟映射。

7.spring boot 配置虚拟路径映射

静态资源访问配置

@Configuration
@EnableWebMvc
public class StaticResourceConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");}}

内置tomcat虚拟文件映射路径
访问项目外的文件需要配置如下:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/image/**").addResourceLocations("file:C:/image/");}}

8.插件集成效果

在这里插入图片描述

参考资料:
岁月如歌,往事如风
SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径 - 程序猿小码 - 博客园
Bootstrap FileInput中文API整理
SpringMVC + bootstrap fileupload 多文件上传
bootstrap fileupload 使用详解

写在后面:集成文件上传插件参考了许多大佬的博客,感谢以上大佬博文。

http://www.lryc.cn/news/2418524.html

相关文章:

  • EI检索入口查询方法
  • magent java_bt种子简介与magnet磁力介绍
  • 毕业设计:基于java的出租车计价器系统设计与实现
  • This failure was cached in the local repository and resolution is not reattempted until the update
  • 前端中--js定时器的用法SetTimeout
  • Web窗体的基本控件
  • Linux格式化命令
  • weblogic漏洞:CNVD-C-2019-48814
  • 日语
  • 【STM32F042】使用NTC热敏电阻实现温度测量
  • 360手机官方刷机教程(N5系列通用)
  • linux 命令:top 详解
  • 比特率(码率) = 采样率 (Sampling rate ) * 位深 (Bit depth)* 声道数目/Opus/AAC/mp3
  • 人工智能常用的优化算法(梯度下降、牛顿法、拟牛顿法、共轭梯度法、)
  • 奇迹按键精灵挂机脚本_按键精灵做连击脚本(奇迹MU战士用)
  • 计算机专业术语e-mail是什么意思,E-mail是什么意思?
  • msvcrtd.dll下载安装方法是什么?快速修复msvcrtd.dll的手段
  • Windows RC版、RTM版、OEM版、RTL版、VOL版的区别
  • 未能加载文件或程序集“System.Data.SQLite, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它
  • Julia的安装与配置详解(包含在Ubuntu 18
  • [android开发必备]Android开发者社区汇总
  • sql获取每一个类别中值最大的一条数据
  • 优秀网站源码、编程源码下载网站大集中(转载-自己用)
  • Asp.Net期末课程设计——个人财务管理系统(C#)(mysql或sqlserver)
  • 设定行车路线实验matlab,基于遗传算法的无时限多配送中心车辆调度问题研究
  • 爬虫小白看过来!详细的Python爬虫分析和案例展示
  • 最好用的WiFi密码共享APP推荐(能查看已连接WiFi密码)
  • Visifire WPF 图表控件 破解
  • MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?
  • 思科模拟器--02.静态路由和默认路由配置24.5.15(24.5.20补)