来源:http://asyty.iteye.com/blog/1230119/
最近需要用到jquery文件上传插件,发现plupload这东西挺好的,奈何后台代码是php,tomcat得配置php才能跑起来,于是稍微研究了下,改成了java代码
plupload的特色是
1、可以配置chunk,将一个大文件分成许多小文件上传,后台通过php合并成大文件,这里通过相应的java代码
2、实际上传的文件名是经过生成唯一的uuid,通过参数name传递到后台
3、上传文件的过程是先上传临时命名为uuid的临时文件,上传成功后会自动生成几个input标签,对应上传之后的临时文件的文件名,之后通过另一个action调用uploadFinish对临时文件进行重命名 操作或者其他操作
这个java代码是基于 Struts2的,不是servlet,反正都是类似的 在这基础上也容易改
- public class UploadAction extends ActionSupport {
- private static final int BUFFER_SIZE = 2 * 1024;
- private File upload;
- private String name; //plupload上传文件的临时文件名 uuid.文件后缀
- private String uploadFileName;
- private String uploadContentType;
- private int chunk;
- private int chunks;
- // 。。。一堆getter setter自己生成
- private void copy(File src, File dst) {
- InputStream in = null;
- OutputStream out = null;
- try {
- if (dst.exists()) {
- out = new BufferedOutputStream(new FileOutputStream(dst, true),
- BUFFER_SIZE); //plupload 配置了chunk的时候新上传的文件appand到文件末尾
- } else {
- out = new BufferedOutputStream(new FileOutputStream(dst),
- BUFFER_SIZE);
- }
- in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
- byte[] buffer = new byte[BUFFER_SIZE];
- int len = 0;
- while ((len = in.read(buffer)) > 0) {
- out.write(buffer, 0, len);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != in) {
- try {
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (null != out) {
- try {
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public String upload() throws Exception {
- String dstPath = ServletActionContext.getServletContext().getRealPath("\\tmp")
- + "\\" + this.getName(); // 保存目录可以自己配置 或者定义变量自行配置
- File dstFile = new File(dstPath);
- // 文件已存在删除旧文件(上传了同名的文件)
- if (chunk == 0 && dstFile.exists()) {
- dstFile.delete();
- dstFile = new File(dstPath);
- }
- copy(this.upload, dstFile);
- //System.out.println(uploadFileName + " " + uploadContentType + " "
- + chunk + " " + chunks);
- if (chunk == chunks - 1) {
- // 一个完整的文件上传完成
- }
- return SUCCESS;
- }
- public String uploadFinish() {
- String dstPath = ServletActionContext.getServletContext().getRealPath("\\tmp");
- HttpServletRequest request = ServletActionContext.getRequest();
- int count = Integer.parseInt(request.getParameter("uploader_count"));
- for (int i = 0; i < count; i++) {
- uploadFileName = request.getParameter("uploader_" + i + "_name");
- name = request.getParameter("uploader_" + i + "_tmpname");
- System.out.println(uploadFileName + " " + name);
- try {
- //对已经上传成功的临时文件进行操作
- } catch(Exception e) {
- }
- }
- return SUCCESS;
- }
- }
补充:
从项目里抽取出了文件上传的代码,单独一个eclipse上可以跑的例子,上传上来了(注意build path里的jre路径)
相关推荐
Plupload 上传.net MVC 上传示例
基于plupload上传至阿里云oss源码
m4v,mpg,mp4,avi,mov,mk,wmv。本文的视频首先选择文件,然后点击上传按钮开始上传,
代码里有plupload上传和uploadify上传两种可供大家参考,建议大家使用plupload上传,此上传各大种浏览器都兼容。uploadify上传和form验证同时使用的话,在FF和chrome浏览器下会存在cookie丢失的问题。
PLupload上传完整例子,经过测试成功,可以传参数
Plupload是有TinyMCE的开发者开发的,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件。Plupload 目前分为一个核心API 和一个jQuery上传队列部件,这样使你可以直接使用或是自己定制。
自己整理的plupload上传插件demo,.net版,打开即可用。包含旧版新版,4种页面,plupload官网太难用,下载的资源需做很多修改,且很多错误。支持皮肤切换,皮肤css文件,图片已在本地。
plupload上传插件 基于jquery 有demo
plupload上传插件,lib下需要两个jar包(commons-fileupload-1.2.jar,commons-io-1.3.2.jar)
java+plupload多附件上传 servelet多附件上传
thinkphp 实现plupload上传图片 thinkphp 实现plupload上传图片
基于java的plupload的上传控件demo
主要功能: 1、多文件上传 2、分片上传 3、显示进度条 博客园地址http://www.cnblogs.com/LoveTX/p/5483588.html
Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度、图像自动缩略和上传分块。可同时上传多个文件。
自己摸索半天整出来的demo,搞一个积分就是为了提升下门槛,怕大家不珍惜,不懂的再问,结合我得博客文章一起看,好用的请点赞 对应的文章https://blog.csdn.net/playboyanta123/article/details/82745824
这次测试使用ASP.NET MVC开发,demo中写了分别用Uploadify和plupload插件上传文件的方法,第一种Uploadify插件有一个问题:谷歌浏览器不兼容,其他浏览器都ok,第二种plupload插件完美兼容我测试过的所有浏览器(ie...
NULL 博文链接:https://rimet711-126-com.iteye.com/blog/1037404
自己根据实际项目使用需要整理的plupload传插件的使用(仅前端相关的使用总结,不包括后台的接收和处理)