- 浏览: 11073 次
- 性别:
- 来自: 北京
文章分类
最新评论
plupload 上传插件(java版)
最近发现一个非常牛的上传组件,前端根据浏览器不同选择使用Html5、 Gears, Silverlight, Flash, BrowserPlus来对文件进行客户端优化,比如大图片的压缩,大文件分块上传,简直是太牛了,还有上传进度条、多文件上传等。官方网 站:http://plupload.com/,下载的domo是php版本的,于是我弄了个java版本的,分享给大家,
前端js等文件去下载个domo就有了,后端使用到了commons-fileupload-1.2.2.jar这个包。
前端html:
前端js等文件去下载个domo就有了,后端使用到了commons-fileupload-1.2.2.jar这个包。
前端html:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>plupload</title> <!-- 配置界面上的css --> <link rel="stylesheet" type="text/css" href="plupload/jquery.plupload.queue/css/jquery.plupload.queue.css"> <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="plupload/plupload.full.js"></script> <script type="text/javascript" src="plupload/jquery.plupload.queue/jquery.plupload.queue.js"></script> <!-- 国际化中文支持 --> <script type="text/javascript" src="plupload/i18n/cn.js"></script> <script type="text/javascript"> /* Convert divs to queue widgets when the DOM is ready */ $(function(){ function plupload(){ $("#uploader").pluploadQueue({ // General settings runtimes : 'html5,gears,browserplus,silverlight,flash,html4', url : 'servlet/fileUpload', max_file_size : '10mb', unique_names: true, chunk_size: '2mb', // Specify what files to browse for filters : [ {title: "Image files", extensions: "jpg,gif,png"}, {title: "Zip files", extensions: "zip"} ], resize: {width: 640, height: 480, quality: 90}, // Flash settings flash_swf_url: 'plupload/plupload.flash.swf', // Silverlight settings silverlight_xap_url: 'plupload/plupload.silverlight.xap', // 参数 multipart_params: {'user': 'Rocky', 'time': '2012-06-12'} }); } plupload(); $('#Reload').click(function(){ plupload(); }); }); </script> <div style="width:750px; margin:0 auto"> <form id="formId" action="Submit.action" method="post"> <div id="uploader"> <p>您的浏览器未安装 Flash, Silverlight, Gears, BrowserPlus 或者支持 HTML5 .</p> </div> <input value="重新上传" id="Reload" type="button"> </form> </div> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>plupload</title> <!-- 配置界面上的css --> <link rel="stylesheet" type="text/css" href="plupload/jquery.plupload.queue/css/jquery.plupload.queue.css"> <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="plupload/plupload.full.js"></script> <script type="text/javascript" src="plupload/jquery.plupload.queue/jquery.plupload.queue.js"></script> <!-- 国际化中文支持 --> <script type="text/javascript" src="plupload/i18n/cn.js"></script> <script type="text/javascript"> /* Convert divs to queue widgets when the DOM is ready */ $(function(){ function plupload(){ $("#uploader").pluploadQueue({ // General settings runtimes : 'html5,gears,browserplus,silverlight,flash,html4', url : 'servlet/fileUpload', max_file_size : '10mb', unique_names: true, chunk_size: '2mb', // Specify what files to browse for filters : [ {title: "Image files", extensions: "jpg,gif,png"}, {title: "Zip files", extensions: "zip"} ], resize: {width: 640, height: 480, quality: 90}, // Flash settings flash_swf_url: 'plupload/plupload.flash.swf', // Silverlight settings silverlight_xap_url: 'plupload/plupload.silverlight.xap', // 参数 multipart_params: {'user': 'Rocky', 'time': '2012-06-12'} }); } plupload(); $('#Reload').click(function(){ plupload(); }); }); </script> <div style="width:750px; margin:0 auto"> <form id="formId" action="Submit.action" method="post"> <div id="uploader"> <p>您的浏览器未安装 Flash, Silverlight, Gears, BrowserPlus 或者支持 HTML5 .</p> </div> <input value="重新上传" id="Reload" type="button"> </form> </div>
后端 package com.rock; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams; public class FileUploadAction extends HttpServlet { private static final long serialVersionUID = 3447685998419256747L; private static final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : \"success\", \"id\" : \"id\"}"; private static final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}"; public static final String JSON = "application/json"; public static final int BUF_SIZE = 2 * 1024; public static final String FileDir = "uploadfile/"; private int chunk; private int chunks; private String name; private String user; private String time; /** * Handles an HTTP POST request from Plupload. * * @param req The HTTP request * @param resp The HTTP response */ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String responseString = RESP_SUCCESS; boolean isMultipart = ServletFileUpload.isMultipartContent(req); if(isMultipart){ ServletFileUpload upload = new ServletFileUpload(); try { FileItemIterator iter = upload.getItemIterator(req); while (iter.hasNext()) { FileItemStream item = iter.next(); InputStream input = item.openStream(); // Handle a form field. if(item.isFormField()){ String fileName = item.getFieldName(); String value = Streams.asString(input); if("name".equals(fileName)){ this.name = value; }else if("chunks".equals(fileName)){ this.chunks = Integer.parseInt(value); }else if("chunk".equals(fileName)){ this.chunk = Integer.parseInt(value); }else if("user".equals(fileName)){ this.user = value; }else if("time".equals(fileName)){ this.time = value; } } // Handle a multi-part MIME encoded file. else { String fileDir = req.getSession().getServletContext().getRealPath("/")+FileDir; File dstFile = new File(fileDir); if (!dstFile.exists()){ dstFile.mkdirs(); } File dst = new File(dstFile.getPath()+ "/" + this.name); saveUploadFile(input, dst); } } } catch (Exception e) { responseString = RESP_ERROR; e.printStackTrace(); } } // Not a multi-part MIME request. else { responseString = RESP_ERROR; } if(this.chunk == this.chunks - 1){ System.out.println("用户:"+this.user); System.out.println("文件名称:"+this.name); System.out.println("上传时间:"+this.time); } resp.setContentType(JSON); byte[] responseBytes = responseString.getBytes(); resp.setContentLength(responseBytes.length); ServletOutputStream output = resp.getOutputStream(); output.write(responseBytes); output.flush(); } /** * Saves the given file item (using the given input stream) to the web server's * local temp directory. * * @param input The input stream to read the file from * @param dst The dir of upload */ private void saveUploadFile(InputStream input, File dst) throws IOException { OutputStream out = null; try { if (dst.exists()) { out = new BufferedOutputStream(new FileOutputStream(dst, true), BUF_SIZE); } else { out = new BufferedOutputStream(new FileOutputStream(dst), BUF_SIZE); } byte[] buffer = new byte[BUF_SIZE]; int len = 0; while ((len = input.read(buffer)) > 0) { out.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (null != input) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != out) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
相关推荐
自己整理的plupload上传插件demo,.net版,打开即可用。包含旧版新版,4种页面,plupload官网太难用,下载的资源需做很多修改,且很多错误。支持皮肤切换,皮肤css文件,图片已在本地。
plupload上传插件,lib下需要两个jar包(commons-fileupload-1.2.jar,commons-io-1.3.2.jar)
plupload上传插件 基于jquery 有demo
Plupload 上传.net MVC 上传示例
Plupload是有TinyMCE的开发者开发的,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件。Plupload 目前分为一个核心API 和一个jQuery上传队列部件,这样使你可以直接使用或是自己定制。
基于java的plupload的上传控件demo
文件上传并读取plupload与java后台的整合实例
plupload和java后台实现多图上传并把缩略图跟上传的url显示到画面上 1、使用jQuery的plupload实现上传功能,前台无需太多配置,简单修改即可符合您的要求。虽然是jQuery虽然是plupload,但是大多需要手动修改的地方...
java+plupload多附件上传 servelet多附件上传
基于PHP的Plupload ajax批量上传插件php版.zip
主要介绍了 jQuery Plupload上传插件的使用详解,需要的朋友可以参考下
PHP实例开发源码—Plupload ajax批量上传插件php版.zip
代码里有plupload上传和uploadify上传两种可供大家参考,建议大家使用plupload上传,此上传各大种浏览器都兼容。uploadify上传和form验证同时使用的话,在FF和chrome浏览器下会存在cookie丢失的问题。
java+plupload多附件上传+分页。完整项目源码。
基于plupload上传至阿里云oss源码
PLupload上传完整例子,经过测试成功,可以传参数
m4v,mpg,mp4,avi,mov,mk,wmv。本文的视频首先选择文件,然后点击上传按钮开始上传,
自己根据实际项目使用需要整理的plupload传插件的使用(仅前端相关的使用总结,不包括后台的接收和处理)
Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度、图像自动缩略和上传分块。可同时上传多个文件。
php多图片上传jQuery插件plupload