来源: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上传至阿里云oss源码”指的是使用Plupload这一JavaScript文件上传库来实现向阿里云OSS上传文件的功能。Plupload是一款强大的多浏览器、多模式(Flash, HTML5, Silverlight, BrowserPlus)...
在.NET MVC框架中,我们可以利用Plupload来构建用户友好的文件上传功能,提供断点续传、批量上传、进度条显示等特性。本示例将详细介绍如何在.NET MVC项目中集成并使用Plupload。 1. **Plupload组件介绍** ...
`plupload`是一个强大的JavaScript文件上传组件,它支持多种文件格式,包括视频文件,如`m4v`, `mpg`, `mp4`, `avi`, `mov`, `mk`, `wmv`等。这些格式都是视频文件的常见类型,每种都有其独特的特性和应用场景。 `...
这个“PLupload上传完整例子”是一个实际应用中的案例,旨在展示如何在网页上实现文件上传功能,并且能够传递额外的参数。 在实际的Web开发中,文件上传是一个常见的需求,而PLupload提供了多浏览器兼容性和良好的...
代码里有plupload上传和uploadify上传两种可供大家参考,建议大家使用plupload上传,此上传各大种浏览器都兼容。uploadify上传和form验证同时使用的话,在FF和chrome浏览器下会存在cookie丢失的问题。
**plupload上传组件详解** plupload是一款强大的JavaScript上传组件,它支持多种浏览器,包括IE6+、Firefox、Chrome、Safari以及Opera等。这个组件以其丰富的功能和良好的跨平台兼容性,深受开发者喜爱。在本文中,...
Plupload是有TinyMCE的开发者开发的,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件。Plupload 目前分为一个核心API 和一个jQuery上传队列部件,这样使你可以直接使用或是自己定制。
Java Plupload上传控件是一个强大的、跨平台的文件上传解决方案,尤其适用于Web应用程序。Plupload是一个JavaScript库,它提供了一种优雅的方式处理多文件上传,支持多种浏览器,并且可以通过多种后端技术(如Java)...
将`Plupload`与`ThinkPHP`结合,可以实现高效、稳定且用户体验良好的图片上传功能。 首先,我们需要理解`Plupload`的核心特性。它支持断点续传、分块上传,这使得大文件上传变得可能,尤其是在网络不稳定的情况下。...
在Servlet中,我们需要处理POST请求,接收Plupload上传的文件。文件通常作为请求的一部分通过`Part`对象传递。首先,确保Servlet支持Multipart内容类型: ```java @WebServlet("/UploadServlet") public class ...
在.NET环境中,开发者通常会创建一个Web API或ASP.NET MVC服务来接收并处理Plupload上传的文件。Plupload的API允许开发者控制上传的进度、暂停、开始等功能。例如,你可以通过JavaScript调用Plupload的start()方法...
**plupload上传插件**是一款强大的、跨平台的文件上传组件,它支持多种浏览器和多种技术栈,如Flash、HTML5、Silverlight和Gears,确保在不同环境下都能实现稳定高效的文件上传功能。该插件设计的目标是提供一个统一...
Plupload 提供了丰富的特性,如上传进度提示、图片预览、多文件同时上传、文件类型过滤和分块上传等。然而,值得注意的是,这些功能在不同的上传模式下可能存在差异,某些可能仅在特定的运行环境中可用。 **引入与...
Plupload是一个功能强大的Web文件上传工具,专为处理大规模文件上传和优化用户体验而设计。它提供了多语言支持,包括JavaScript、Flash、Silverlight和HTML5等多个版本,确保在各种浏览器和设备上都能运行良好。...
**plupload文件上传模块** plupload是一款开源的跨浏览器文件上传组件,支持多种浏览器环境,包括IE6+、Firefox、Chrome、Safari以及Opera。它提供了丰富的API接口,可以方便地集成到各种Web应用中,实现高效、稳定...
Plupload 是一个强大的多浏览器、多模式的文件上传组件,版本2.1.2尤其针对JavaScript和HTML页面的图片上传进行了优化,特别适用于手机微信网页环境。它支持多种浏览器技术,如Flash, Silverlight, Gears, ...
3. **断点续传**:如果上传过程中网络中断,Plupload可以记住已上传的部分,在恢复连接后继续上传,避免了重复工作。 4. **进度条显示**:提供实时的上传进度反馈,用户可以清楚地看到文件上传的进度,提升用户体验...
自己摸索半天整出来的demo,搞一个积分就是为了提升下门槛,怕大家不珍惜,不懂的再问,结合我得博客文章一起看,好用的请点赞 对应的文章https://blog.csdn.net/playboyanta123/article/details/82745824
这次测试使用ASP.NET MVC开发,demo中写了分别用Uploadify和plupload插件上传文件的方法,第一种Uploadify插件有一个问题:谷歌浏览器不兼容,其他浏览器都ok,第二种plupload插件完美兼容我测试过的所有浏览器(ie...