Bootstrap的fileinput插件实现多文件上传的方法


Posted in Javascript onSeptember 05, 2016

*1.bootstrap-fileinput 插件git下载地址

https://github.com/kartik-v/bootstrap-fileinput.git

2.解决使用bootstrap-fileinput得到返回值

上传图片

$("#file-0a").fileinput({
uploadUrl : "/upload_img",//上传图片的url
allowedFileExtensions : [ 'jpg', 'png', 'gif' ],
overwriteInitial : false,
maxFileSize : 1000,//上传文件最大的尺寸
maxFilesNum : 1,//上传最大的文件数量
initialCaption: "请上传商家logo",//文本框初始话value
//allowedFileTypes: ['image', 'video', 'flash'],
slugCallback : function(filename) {
return filename.replace('(', '_').replace(']', '_');
}
});

注意上传图片事件完之后,得到返回值写法

$('#file-0a').on('fileuploaded', 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.paths);//打印出路径
});

jsp页面

<input id="file-0a" class="file" type="file" multiple
data-min-file-count="1" name="upload_logo">

其中data-min-file-count=”1”是指文件上传最低数量

3.服务端代码

采用了spring自带插件上传,框架为Springmvc

Bean

import java.util.List;
public class Picture {
private List<String> paths;
public List<String> getPaths()
{
return paths;
}
public void setPaths(List<String> paths)
{
this.paths = paths;
} 
}

Controller

@ResponseBody
@RequestMapping(value="upload_img",method=RequestMethod.POST)
public Picture uploadImage(@RequestParam MultipartFile[] upload_logo) throws IOException{
log.info("上传图片");
Picture pic = new Picture();
List<String> paths = new ArrayList<String>();
String dir = UploadUtil.getFolder();
for(MultipartFile myfile : upload_logo){ 
if(myfile.isEmpty()){ 
log.info("文件未上传"); 
}else{ 
log.info("文件长度: " + myfile.getSize()); 
log.info("文件类型: " + myfile.getContentType()); 
log.info("文件名称: " + myfile.getName()); 
log.info("文件原名: " + myfile.getOriginalFilename()); 
log.info("========================================");
//上传文件 返回路径
String path = UploadUtil.writeFile(myfile.getOriginalFilename(), dir, myfile.getInputStream());
log.info("文件路径:"+path);
paths.add(path);
} 
} 
pic.setPaths(paths);
return pic;
}

uploadUtil

private static final Logger log = LoggerFactory.getLogger(UploadUtil.class);
private UploadUtil() {
}
private static SimpleDateFormat fullSdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
private static SimpleDateFormat folder = new SimpleDateFormat(
"yyyy" + File.separator + "MM" + File.separator + "dd");
/**
* 返回yyyy File.separator MM File.separator dd格式的字符串
* 
* @return
*/
public static String getFolder() {
return folder.format(new Date());
}
/**
* 文件上传
* 
* @param srcName
* 原文件名
* @param dirName
* 目录名
* @param input
* 要保存的输入流
* @return 返回要保存到数据库中的路径
*/
public static String writeFile(String srcName, String dirName, InputStream input) throws IOException {
log.info(srcName);
// 取出上传的目录,此目录是tomcat的server.xml中配置的虚拟目录
String uploadDir = ContextUtil.getSysProp("upload_dir");//设置你上传路径
// 取出虚拟目录的访问路径
String virtualDir = ContextUtil.getSysProp("virtual_dir");//设置你虚拟目录访问路径
// 重命名文件
if (null != srcName) {
srcName = srcName.substring(srcName.indexOf("."));
} else {
srcName = ".jpg";
}
String filename = "";
// 得到要上传的文件路径
filename = uploadDir + File.separator + dirName + File.separator + fullSdf.format(new Date()) + srcName;
// 得到将要保存到数据中的路径
String savePath = filename.replace(uploadDir, "");
savePath = virtualDir + savePath.replace("\\", "/");
File file = new File(filename);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(file);
// 一次30kb
byte[] readBuff = new byte[1024 * 30];
int count = -1;
while ((count = input.read(readBuff, 0, readBuff.length)) != -1) {
fos.write(readBuff, 0, count);
}
fos.flush();
fos.close();
input.close();
return savePath;
}

4.解决上传时候遇到的一些问题

如遇见点击上传之后,进度条显示为100%,jsp页面显示[Object,obejct],那么注意你后台返回的是否为json对象。

以上所述是小编给大家介绍的Bootstrap的fileinput插件实现多文件上传的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中去除数组重复元素的实现方法【实例】
Apr 12 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 Javascript
javascript轮播图算法
Oct 21 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
js 显示日期时间的实例(时间过一秒加1)
Oct 25 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
es6中new.target的作用和使用场景简单示例分析
Mar 14 Javascript
基于vue实现探探滑动组件功能
May 29 Javascript
教你部署vue项目到docker
Apr 05 Vue.js
jQuery树形插件jquery.simpleTree.js用法分析
Sep 05 #Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 #Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 #Javascript
BootStrap使用file-input插件上传图片的方法
Sep 05 #Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 #Javascript
Bootstrap使用基础教程详解
Sep 05 #Javascript
chrome浏览器如何断点调试异步加载的JS
Sep 05 #Javascript
You might like
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
Python实现文件内容批量追加的方法示例
2017/08/29 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python保存数据到本地文件的方法
2018/06/23 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
企业统计员岗位职责
2013/12/13 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
校园活动策划书范文
2014/01/10 职场文书
工作建议书范文
2014/05/13 职场文书
高效课堂标语
2014/06/26 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
2015年司机工作总结
2015/04/23 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫