多文件上传artDialog+plupload

一、效果展示

包括文件上传面板以及文件上传列表

二、介绍

长话短说,采用spring springMVC mybatis maven mysql,实现多文件上传功能,下载使用的是流的形式。

其中涉及的分页我会另开一片博客介绍。

三、准备材料

plupload

artDialog

还有一份初始化插件的js文件

这些可以直接从我的分享连接里面下载

链接:http://pan.baidu.com/s/1c27cTAK 密码:btqj

还有jquery 这个自行下载

四、前台代码

引入样式以及js文件

1 <link rel="stylesheet" href="resources/css/plupload.css" type="text/css">
2
3 <script src="resources/js/jquery.min.js"></script>
4 <script src="resources/upload/plupload.full.min.js"></script>
5 <script src="resources/artDialog4.1.7/artDialog.source.js?skin=blue"></script>
6 <script src="resources/js/upload.js"></script>

js代码

 _plupload(绑定的uuid,文件上传路径);①关于绑定的uuid,我举个例子,当前用户的id就是uuid,你可以把用户id和你上传的文件相关联,以后查询的话根据用户id就能查询这个用户上传的所有文件②这个方法是封装过的,在upload.js里面能看到,我里面注释写的很清楚,也可以参考官方文档
1 $(function() {
2         3         $(‘#uploadBtn‘).click(function() {
4             popUpDialog();
5         });
6         _plupload(‘test‘,‘${pageContext.request.contextPath}/uploadfile‘);
7
8     });

页面代码,一个按钮,一个弹出框

1 <a id="uploadBtn" class="optionbtn inline" href="#">文件上传</a>
2     <!-- 触发弹出框 -->
3     <div id="uploadContent" style="display: none; height: 300px; overflow-x: hidden; overflow-y: auto;">
4         <div id="choosefile">
5             <span>单个文件支持小于100M</span><br /> <a id="uploadify" href="javascript:void(0);">选择文件</a>
6         </div>
7         <div id="uploadfileQueue" style="border: 1px solid #a7c5e2; height: 228px; width: 350px;"></div>
8     </div>
9     <pre id="console"></pre>

五、后台代码

我都没有封装成方法,为了看得明白,可以自己封装一下

 1     /**
 2      * 文件上传请求地址
 3      *
 4      * @param request
 5      * @param response
 6      */
 7     @RequestMapping("uploadfile")
 8     public void upload(HttpServletRequest request, HttpServletResponse response) {
 9
10         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;// 二进制上传
11         CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");// 获取文件
12
13         String unid = UUID.randomUUID().toString().replace("-", "");/* 文件主键 */
14         String originalFilename = file.getOriginalFilename();/* 原文件名,包括后缀 */
15         String flieSize = String.valueOf(file.getSize());/* 文件大小 */
16         String path = null;/* 文件存储路径 */
17         String punid = request.getParameter("punid"); /* 关联文件punid */
18
19         // 保存文件
20         if (file != null) {
21             try {
22                 String basePath = request.getSession().getServletContext().getRealPath("/uploadfile");
23                 SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
24                 String subPath = sdf.format(new Date());
25                 path = basePath + subPath + unid + File.separator + originalFilename;
26
27                 // 如果文件夹不存在,就创建文件夹
28                 File dir = new File(path);
29                 if (!dir.exists()) {
30                     dir.mkdirs();
31                 }
32                 file.transferTo(dir);
33             } catch (Exception e) {
34                 e.printStackTrace();
35             }
36         }
37
38         // 文件大小转换
39         long kb = 1024;
40         long mb = kb * 1024;
41         long gb = mb * 1024;
42         long size = Long.parseLong(flieSize);
43         if (size >= gb) {
44             flieSize = String.format("%.1f GB", (float) size / gb);
45         } else if (size >= mb) {
46             float f = (float) size / mb;
47             flieSize = String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
48         } else if (size >= kb) {
49             float f = (float) size / kb;
50             flieSize = String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
51         } else {
52             flieSize = String.format("%d B", size);
53         }
54
55         // 存储文件信息进数据库
56         FileUpload fileUpload = new FileUpload();
57         fileUpload.setUnid(unid);
58         fileUpload.setOriginalFilename(originalFilename);
59         fileUpload.setFlieSize(flieSize);
60         fileUpload.setPath(path);
61         fileUpload.setPunid(punid);
62         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
63         fileUpload.setFlieTime(df.format(new Date()));
64         fileUploadService.insert(fileUpload);
65     }

这里附带一个下载的方法,是用文件流,根据文件id来进行下载

 1     @RequestMapping("downloadfile")
 2     public void downLoadfile(HttpServletRequest request, HttpServletResponse response) {
 3         String unid = request.getParameter("unid");
 4         FileUpload fileUpload = fileUploadService.selectByPrimaryKey(unid);
 5         if (fileUpload != null) {
 6             try {
 7                 String filename = new String(fileUpload.getOriginalFilename().getBytes("GBK"), "ISO-8859-1");
 8                 String path = fileUpload.getPath();
 9                 response.setCharacterEncoding("utf-8");
10                 response.setContentType("application/octet-stream");
11                 response.setHeader("Content-Disposition", "attachment;fileName=" + filename);
12                 response.setHeader("Content-Length", fileUpload.getFlieSize());
13
14                  InputStream inputStream = new FileInputStream(new
15                  File(path));
16                  OutputStream os = response.getOutputStream();
17                  byte[] b = new byte[2048];
18                  int length;
19                  while ((length = inputStream.read(b)) > 0) {
20                  os.write(b, 0, length);
21                  }
22                  os.close();
23                  inputStream.close();
24             } catch (FileNotFoundException e) {
25                 e.printStackTrace();
26             } catch (IOException e) {
27                 e.printStackTrace();
28             }
29         }
30     }

还有一个删除方法

 1     /**
 2      * 文件删除
 3      *
 4      * @param request
 5      * @param response
 6      */
 7     @ResponseBody
 8     @RequestMapping("delfile")
 9     public Map<String, Object> delfile(HttpServletRequest request, HttpServletResponse response) {
10         String unid = request.getParameter("unid");
11         FileUpload fileUpload = fileUploadService.selectByPrimaryKey(unid);
12         // 删除本地
13         boolean flag = false;
14         File file = new File(fileUpload.getPath());
15         if (file.exists()) {// 路径为文件且不为空则进行删除
16             flag = file.delete();
17         }
18         // 删除数据库
19         int result = fileUploadService.deleteByPrimaryKey(unid);
20         if (result > 0) {
21             flag = true;
22         }
23         Map<String, Object> map = new HashMap<String, Object>();
24         map.put("result", flag);
25         return map;
26     }

六、最后

如果要完整的代码可以给我留言,我发给你

时间: 2024-10-08 16:16:05

多文件上传artDialog+plupload的相关文章

web 文件上传组件 Plupload

Plupload官网:点击打开链接   建议下载最新版本,低版本会出现浏览器兼容问题. 最近公司有个项目需要在web端使用多文件上传功能,刚开始准备使用HTML5来做,但是IE9以下是都不支持的,于是想到了flash,在网上搜了下各种开源的组件,最后决定使用Plupload,下面来介绍一下该组件使用时遇到的一些问题以及解决方案. 先贴出配置参数: <script type="text/javascript"> // Initialize the widget when th

多图片/文件上传 - SwfUpload/PlUpload

<文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>

文件上传插件 plupload ,上传一个,删除之前上传,才能继续上传

var uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4',//用来指定上传方式,指定多个上传方式请使用逗号隔开. browse_button: 'browse',//触发文件选择对话框的按钮,为那个元素id container: container, //用来指定Plupload所创建的html结构的父容器,默认为前面指定的browse_button的父元素.该参数的值可以是一个元素的id,也

文件上传工具plupload的使用后

plupload 是一款优秀的上传框架,操作简单,支持各大主流浏览器,提供拖拽选择文件,文件多上传,进度,删除,停止等多个接口,满足各种业务逻辑的需要.效果如图: 1.首先登录http://www.plupload.com下载plupload包,目前最新是plupload-2.1.3. 2.将plupload包直接拷贝到WebRoot路径下, 3.在页面中引入jar包 首先引入jquery包,因为jquery包是基础,plupload也依赖jquery包,再引入plupload.full.min

Web文件上传模块 Plupload

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件. 示例代码: <!-- Load Queue widget CSS and jQuery --> <style type="text/css">@import url(css/plupload.queue.css);</style> <script type="text/javascript" src=

web文件上传大小限制

最近在项目中遇到上传文件,对上传文件的大小需要进行限制,这里学习和整理了一下一些常规的文件大小限制的方法. 一般分为两种方式,一种是服务器端判断文件大小进行限制,这种方法的存在明显的缺陷,当用户过多后,数据上传到服务器之后,在对其进行监测,大大增加了宽带和服务器的压力. 另一种是放在前端进行大小监测, 这种方式提前进行监测,可以有效减小服务器的压力. 当上传的文件过大之后,可以使用百度开发的文件上传插件 WebUploader,或者另一个文件上传插件Plupload. 下面分别介绍两种方式: #

plupload+artdialog实现多平台文件上传

背景:本来项目中使用的前端文件上传控件是uploadify,一切相安无事了一段时间后.现场传来"喜讯",客户要用ipad使用系统,还想上传图片.客户老爷一拍脑门,研发就要加班加点.大家知道uploadify是依赖flash的,所以在ios,mac系统上都不行.于是,经过一番google,找到了plupload.上手比较简单. 页面html代码: head标签中包含必要的js文件 <script type="text/javascript" src="

plupload+struts2实现文件上传下载

plupload是一款优秀的web前端上传框架.使用简单.功能强大.不仅支持文件多上传,进度条.拖拽方式选择文件更重要的是他会自己主动的识别浏览器来选择最合适的上传方式.废话少说先上图: 代码都是測试过的非常好用,仅仅要把jquery路径和版本号改动下面,去plupload官网把jar把下载下来就能够用了. 先看一下uploadUI.jsp源码.uploadUI.jsp就是上图显示的页面: <%@ page language="java" import="java.ut

plupload文件上传插件

一 资源文档 二 基本使用 三 可能遇到的问题 一 资源文档 Git仓库地址:https://github.com/moxiecode/plupload 一个中文速查:http://www.cnblogs.com/2050/p/3913184.html 可能有用的demo: http://chaping.github.io/plupload/demo/index.html 二 基本使用 html: <ul id="filelist"></ul> <br /