`
asyty
  • 浏览: 347795 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

juqery文件上传 plupload java修改版

阅读更多

最近需要用到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路径)

 

原创,欢迎转载,请标明源

http://asyty.iteye.com/blog/1230119/

分享到:
评论
21 楼 liutingna86 2015-10-07  
我调试了一下,只能上传excel表格的文件,其他扩展名的文件都不行呢?求指教
20 楼 ljx_523 2015-08-25  
                   
19 楼 lms2qwert 2015-03-24  
调试中。。。
18 楼 jyw0626 2015-01-16  
请问~chunk分为几小块之后怎么可以直接增加到前一部分后面呢。我一直弄不出来~上传的文件总是有问题。
if (chunk == chunks - 1) { 
            // 一个完整的文件上传完成 
}
17 楼 dinne1987 2014-12-18  
我刚把你的example下载后,用HTML5技术,可以选择文件,但点击上传后,就报错了。
16 楼 junwanjiang 2014-03-12  
看了你的例子,自己操作了下,上传上去的文件名改了,怎么样能保证文件名不被改动
15 楼 qq632880273 2013-08-08  
求例子 求共享 我的邮箱是632880273@qq.com
14 楼 qq632880273 2013-08-08  
求例子 求共享   谢谢了   我的邮箱cwm_chen@126.com
13 楼 chenlog 2013-06-24  
搞了半天,原来哥哥把那个js文件稍微改了一下   哭
12 楼 wbin_java 2013-06-20  
不错,很给力!
11 楼 ycyangcai 2013-05-14  
不错!!!
10 楼 cofg 2013-03-21  
太好了~~ 多谢博主分享!
9 楼 zaoanfeng 2012-11-05  
js中max_file_size与chunk_size的值相同,后台获取的chunks始终不等于1.
8 楼 dyyweb 2012-08-22  
发给我一份  急用 拜求   275001477@qq.com
7 楼 king_shanqiu 2012-07-24  
[size=xx-small][/size][align=left][/align]
[img][/img] 
6 楼 huawin 2012-07-04  
学习了,谢谢共享
5 楼 asyty 2011-11-16  
哦,混合上jquyer dialog我倒没试过。。不过jquery插件混用确实有可能出问题。。
cwm_chen 写道
我已经调试成功了,但是出现问题。
1。采用jquyer dialog 对话框创建上传组件
出现问题:1。打开对话框,选择文件上传,没有问题。
2。关闭dialog之前选择文件,然后在打开dialog上传文件上传停止不动。
3。选择文件后,提交表单,进行上传,与2一个效果。

4 楼 cwm_chen 2011-11-16  
我已经调试成功了,但是出现问题。
1。采用jquyer dialog 对话框创建上传组件
   var uploaderDialog;
//判断是否已经加载上传组件
if($("#uploaderDialog").html() == null){
//创建上传组件
uploaderDialog = $("<div id='uploaderDialog' title='"+title+"'></div>").appendTo("body");
uploaderDialog.html($("#uploader"));
$("#uploader").plupload({
runtimes:"gears,flash,silverlight,browserplus,html5,html4",
url:"uploadFileAction",
max_file_size:"200mb",
chunk_size:"2mb",
unique_names:true,
filters:[
{title:"请选择压缩文件", extensions:"zip"}
],
flash_swf_url:path + "/js/plupload/plupload.flash.swf",
silverlight_xap_url:path + "/js/plupload/plupload.silverlight.xap"
});

//jquery ui对话框显示上传组件
uploaderDialog.dialog({
autoOpen:false,
width:700,
height:420,
resizable:false,
modal: true,
buttons:{
'关闭':function(){
uploaderDialog.dialog("close");
}
}
});
}else{
$("#uploaderDialog").dialog("open");
}
出现问题:1。打开对话框,选择文件上传,没有问题。
2。关闭dialog之前选择文件,然后在打开dialog上传文件上传停止不动。
3。选择文件后,提交表单,进行上传,与2一个效果。
求解答我的QQ295099383 陈伟明
3 楼 cwm_chen 2011-11-15  
太感谢了。
2 楼 asyty 2011-11-15  
cwm_chen 写道
你好请问你又例子吗,麻烦共享一份,让我们可以下载,谢谢了。我的邮箱cwm_chen@126.com

我等会把代码发你

相关推荐

    多文件上传JQUERY PLUPLOAD

    **多文件上传JQUERY PLUPLOAD** 在Web开发中,用户经常需要上传多个文件,例如图片、文档等。传统的HTML表单上传方式仅支持单个文件的上传,这在处理大量文件时显得效率低下。为了解决这个问题,开发人员通常会采用...

    plupload+jquery+java多文件上传下载功能

    标题中的“plupload+jquery+java多文件上传下载功能”是指使用plupload插件结合jQuery和Java技术,实现一个能够支持多文件上传和下载(包括单个文件直接下载及多个文件打包下载)的功能。这个功能通常应用于需要大量...

    jquery UI PLUPLOAD

    jQuery UI和Plupload是两个在Web开发中广泛使用的JavaScript库,它们分别专注于用户界面和文件上传功能。 **jQuery UI** 是一个基于jQuery的开源库,它提供了丰富的交互式用户界面组件,如对话框(Dialog)、日历...

    文件上传并读取plupload与java后台的整合实例

    本实例将详细讲解如何使用plupload前端组件与Java后端(Spring MVC框架)进行整合,实现文件上传及读取的功能。 首先,让我们了解plupload。Plupload是一款强大的、跨浏览器的文件上传组件,支持多文件选择、队列...

    Plupload + jquery.plupload.queue 批量上传 和 plupload.full单个上传

    在本项目中,结合了 `jquery.plupload.queue` 插件,使得文件上传变得更加用户友好,可以实现文件的批量上传功能。 批量上传是指用户可以选择多个文件,一次性提交到服务器进行处理。`jquery.plupload.queue` 插件...

    多文件上传plupload

    Plupload是一款强大的多文件上传控件,它旨在提供跨浏览器、跨平台的文件上传解决方案,类似于早期的SWFUpload。Plupload以其灵活性、稳定性和丰富的特性集而受到开发者的青睐。 Plupload的核心功能包括: 1. **多...

    java大文件上传

    本篇将详细讲解如何使用`plupload`与Java实现大文件上传。 `plupload`是一个强大的多浏览器文件上传插件,支持多种浏览器和多种上传方式,包括传统的表单提交、IFrame、Flash、Silverlight以及HTML5。它具有断点续...

    js插件(jquery,plupload)

    JavaScript 插件是扩展网页功能的强大工具,其中jQuery和plupload是两个非常著名的库,用于增强网站的交互性和文件上传功能。这篇文档将详细介绍这两个插件及其在实际应用中的使用。 首先,jQuery是一个轻量级的...

    java + plupload上传文件

    Plupload是有TinyMCE的开发者开发的,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件。Plupload 目前分为一个核心API 和一个jQuery上传队列部件,这样使你可以直接使用或是自己定制。

    文件上传控件PlupLoad 的使用

    **文件上传控件PlupLoad详解** 在网页开发中,文件上传功能是不可或缺的一部分,而PlupLoad是一款高效、强大的文件上传控件,它提供了丰富的API和多种皮肤,支持多浏览器,包括IE6在内的老旧浏览器,使得文件上传...

    plupload文件上传模块

    **plupload文件上传模块** plupload是一款开源的跨浏览器文件上传组件,支持多种浏览器环境,包括IE6+、Firefox、Chrome、Safari以及Opera。它提供了丰富的API接口,可以方便地集成到各种Web应用中,实现高效、稳定...

    jquery文件上传例子(两种方式)

    另一种jQuery文件上传方法是使用插件,例如`plupload`、`jQuery Form Plugin`或者`jQuery File Upload`。这些插件提供更丰富的功能,如多文件上传、进度条显示、错误处理等。`jqueryUpload.html`可能演示了其中一种...

    plupload java断点续传

    总的来说,Plupload结合Java的断点续传解决方案,为开发者提供了高效、稳定且用户友好的大文件上传体验,是许多企业和项目中不可或缺的工具。在实际应用中,根据具体需求进行定制和优化,可以进一步提升系统的性能和...

    plupload和java后台实现多图上传并把缩略图跟上传的url显示到画面上

    plupload和java后台实现多图上传并把缩略图跟上传的url显示到画面上 1、使用jQuery的plupload实现上传功能,前台无需太多配置,简单修改即可符合您的要求。虽然是jQuery虽然是plupload,但是大多需要手动修改的地方...

    java+plupload多附件上传 servelet

    在Servlet中,我们需要处理POST请求,接收Plupload上传的文件。文件通常作为请求的一部分通过`Part`对象传递。首先,确保Servlet支持Multipart内容类型: ```java @WebServlet("/UploadServlet") public class ...

    Plupload 上传.net MVC 上传示例

    在.NET MVC框架中,我们可以利用Plupload来构建用户友好的文件上传功能,提供断点续传、批量上传、进度条显示等特性。本示例将详细介绍如何在.NET MVC项目中集成并使用Plupload。 1. **Plupload组件介绍** ...

    plupload文件上传工具

    Plupload是一个功能强大的Web文件上传工具,专为处理大规模文件上传和优化用户体验而设计。它提供了多语言支持,包括JavaScript、Flash、Silverlight和HTML5等多个版本,确保在各种浏览器和设备上都能运行良好。...

    Plupload多文件上传

    Plupload是一款强大的多文件上传插件,它支持多种浏览器和平台,包括IE6在内的老旧浏览器。这款插件采用JavaScript编写,同时结合HTML5、Flash、Silverlight和HTML4等多种技术,确保在各种环境下都能实现文件的上传...

    plupload-php+批量上传jquery[附加说明书版].zip

    此“plupload-php+批量上传jquery[附加说明书版].zip”压缩包提供了使用Plupload与PHP和jQuery进行批量文件上传的详细资源。 Plupload的核心特性包括: 1. **多浏览器兼容性**:Plupload使用Flash、Silverlight、...

    springboot整合plupload,实现文件批量上传、断点续传、秒传 源码

    在本文中,我们将深入探讨如何使用SpringBoot框架与Plupload工具进行集成,以实现文件的批量上传、断点续传和秒传功能。这个项目基于SpringBoot 2和Plupload 2.3.6,提供了直观的上传进度条,并且是在IntelliJ IDEA...

Global site tag (gtag.js) - Google Analytics