`
kjkhi
  • 浏览: 184772 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Struts使用plupload实现多文件上传

 
阅读更多
plupload,一个挺不错js框架。到时其官方demo中只是提供了php服务端代码。
下面是我个人修改的,通过Struts实现多文件上传。
package net.bingosoft.attach.action;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.bingosoft.attach.common.FileHelper;
import net.bingosoft.attach.service.AttachService;
import net.bingosoft.common.config.Config;
import net.bingosoft.common.struts.BaseAction;
import net.bingosoft.competition.model.VieFile;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class PluploadAction extends BaseAction{
	
	static private final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}";
	static private final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}";
	static private final String JSON = "application/json";
	
	private AttachService attachService;

	public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
		
		request.setCharacterEncoding("UTF-8");
		String responseString = RESP_SUCCESS;
		String belongId = request.getParameter("belongId");
		String belongModel = request.getParameter("belongModel");
		
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		if (isMultipart) {
			ServletFileUpload upload = new ServletFileUpload();
	
			//webroot绝对路径
			String webRootPath = FileHelper.getServerWebRoot();
			String context = request.getContextPath();
			try {
				FileItemIterator iter = upload.getItemIterator(request);
				while (iter.hasNext()) {
				    FileItemStream item = iter.next();

				 // Handle a multi-part MIME encoded file.
				    if (!item.isFormField()) {
				    	String filename = item.getName();
					    InputStream input = item.openStream();
				    	
				    	String filePath = FileHelper.getServerREFile(filename);

				    	FileHelper.uploadFile(input, webRootPath+filePath);
				    	
				    	if(belongModel.equals(Config.getString("JINGZHENG_UPLOAD_FLAG"))){
				    		VieFile vieFile = new VieFile();
				    		vieFile.setFid(UUID.randomUUID().toString());
				    		vieFile.setIid(belongId);
				    		vieFile.setFilePath(context+"/"+filePath);
				    		vieFile.setFileName(filename);
				    		attachService.getBaseDao().save(vieFile);
				    	}
				    	
				    }
				}
			}
			catch (Exception e) {
				responseString = RESP_ERROR;
				e.printStackTrace();
			}
		}
		// Not a multi-part MIME request.
		else {
			responseString = RESP_ERROR;
		}

		response.setContentType(JSON);
		byte[] responseBytes = responseString.getBytes();
		response.setContentLength(responseBytes.length);
		ServletOutputStream output = response.getOutputStream();
		output.write(responseBytes);
		output.flush();
		
	}

	public AttachService getAttachService() {
		return attachService;
	}

	public void setAttachService(AttachService attachService) {
		this.attachService = attachService;
	}
}

分享到:
评论

相关推荐

    Plupload多文件上传

    然后,创建一个HTML页面,使用Plupload的配置选项设置上传参数,如URL(即Struts2的Action地址)、多文件上传支持、文件类型限制等。通过这些配置,用户可以选择多个文件并开始上传。 在Struts2的Action中,我们...

    plupload struts2 jsp上传

    通过上述知识点,我们可以实现一个完整的基于Plupload、Struts2和JSP的文件上传系统,为用户提供高效、安全的文件上传功能。在这个过程中,理解并掌握每个技术的原理和用法至关重要,同时也要注重实际操作中的性能...

    Plupload多文件上传(调整后)

    综上所述,"Plupload多文件上传(调整后)"项目是为了解决Struts2环境中大文件上传的问题,它利用了Plupload的分块上传和断点续传功能,同时可能优化了Servlet和Struts2的文件上传处理逻辑,以适应大文件的上传需求。...

    plupload文件批量上传工具

    在Java环境中,我们可以利用Plupload的特性来实现用户友好的文件上传功能,提升用户体验。下面将详细介绍如何在Java应用中集成并使用Plupload。 1. **Plupload的特性** - **多浏览器兼容**:Plupload通过Flash、...

    Struts2.3.6的文件上传(多种)的实现

    在本文中,我们将深入探讨如何在Struts2框架下实现三种不同类型的文件上传:单个文件上传、固定数量文件上传以及不固定数量文件上传。 首先,为了实现文件上传,我们需要以下准备: 1. 获取Struts2.3.6的库文件,...

    plupload文件上传

    集成Struts2框架的FileUpload示例,展示了如何在Java Web应用中利用Plupload实现文件上传。Struts2是一个流行的MVC框架,用于构建动态Web应用。通过整合Plupload,开发者可以创建用户友好的文件上传界面,同时在...

    使用ExtJs的插件UploadDialog+struts2.0实现多文件上传

    在本文中,我们将深入探讨如何使用ExtJS的UploadDialog插件与Struts2.0框架相结合,实现一个功能完备的多文件上传功能。这是一项在Web应用开发中常见的需求,对于用户交互性和数据管理有着重要作用。 首先,让我们...

    struts2多文件上传

    综上所述,结合Struts2和plupload,我们可以实现一个高效、用户友好的多文件上传功能。通过前端与后端的紧密配合,不仅可以提升用户体验,还能确保文件上传过程的稳定性和安全性。在实际开发中,还可以根据具体需求...

    plupload:使用plupload上传大文件

    Plupload 是一个强大的多浏览器文件上传组件,支持断点续传、多线程上传和大文件上传等功能。在JavaScript环境中,它提供了丰富的API和多种皮肤,可以方便地集成到各种Web应用中。以下是对Plupload使用及核心知识点...

    带进度条的多文件上传struts

    综上所述,"带进度条的多文件上传Struts"涉及了Struts框架的使用、plupload插件的集成、前端和后端的交互、以及用户体验优化等多个方面。理解并掌握这些知识点对于开发高效、用户友好的Web应用至关重要。

    swfupload java 上传进度条 上传时间 速度 struts2 开源

    SwfUpload 是一个开源的JavaScript库,用于在Web应用程序中实现文件上传功能,它与Java后端技术如Struts2框架结合使用,可以提供高级的文件上传体验。在这个项目中,SwfUpload 被用来展示文件上传的进度、速度以及...

    解决struts组件上传附件速度很慢的问题

    4. **使用第三方上传组件**:有许多第三方的文件上传插件和库,如Plupload、FineUploader等,它们针对各种浏览器进行了优化,可能提供更好的上传体验。 5. **服务器性能调优**:检查和优化服务器性能,如内存分配、...

    图片文件上传案例集合

    本文将深入探讨“图片文件上传案例集合”中的几个关键技术和案例,包括uploadify、plupload、uploads、onloadfile以及Struts2MultipartFileUpload。 1. **uploadify**: Uploadify是一款基于jQuery的文件上传插件...

    jsp大文件上传带进度条

    在IT行业中,大文件上传和进度条显示是用户体验的重要组成部分,尤其是在处理大量数据或多媒体文件时。本篇文章将深入探讨如何在JSP...通过合理的设计和实现,我们可以创建一个高效、可靠且用户友好的文件上传系统。

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

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

    基于插件和Struts的批量上传

    8. **性能优化**:对于大批量的文件上传,可以考虑使用分块上传、多线程处理和流式传输技术,以提高上传效率。 通过以上步骤,我们可以构建一个基于插件和Struts的批量上传系统。这不仅简化了开发流程,也提高了...

    Struts2+上传进度条完美运行

    在这个“Struts2+上传进度条完美运行”的主题中,我们将深入探讨如何在Struts2框架下实现文件上传功能,并结合进度条展示上传进度,提供用户友好的交互体验。 1. **Struts2文件上传**: Struts2通过`struts2-core`...

    java大文件异步上传

    在Struts2框架中,可以利用其Action类和拦截器实现文件上传。Struts2的`FileUploadInterceptor`拦截器可以帮助我们处理文件上传的细节,如文件大小限制、类型检查等。 接着,我们来看Struts2的配置。在struts.xml...

    使用SWFUpload上传文件

    SWFUpload 是一款开源的JavaScript库,用于在Web应用程序中实现文件上传功能,特别是支持多文件选择上传。它依赖于Adobe Flash技术,因此能够在不支持HTML5文件上传API的浏览器中提供类似的功能。以下是关于使用...

    struts2AndUploadify集成

    而Uploadify是一款JavaScript插件,它使用Flash技术实现异步文件上传,可以处理多文件同时上传,提供良好的用户体验。 在Struts2中集成Uploadify,主要是为了解决传统HTML表单提交时可能导致页面刷新的问题,以及...

Global site tag (gtag.js) - Google Analytics