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;
}
}
分享到:
相关推荐
然后,创建一个HTML页面,使用Plupload的配置选项设置上传参数,如URL(即Struts2的Action地址)、多文件上传支持、文件类型限制等。通过这些配置,用户可以选择多个文件并开始上传。 在Struts2的Action中,我们...
通过上述知识点,我们可以实现一个完整的基于Plupload、Struts2和JSP的文件上传系统,为用户提供高效、安全的文件上传功能。在这个过程中,理解并掌握每个技术的原理和用法至关重要,同时也要注重实际操作中的性能...
综上所述,"Plupload多文件上传(调整后)"项目是为了解决Struts2环境中大文件上传的问题,它利用了Plupload的分块上传和断点续传功能,同时可能优化了Servlet和Struts2的文件上传处理逻辑,以适应大文件的上传需求。...
在Java环境中,我们可以利用Plupload的特性来实现用户友好的文件上传功能,提升用户体验。下面将详细介绍如何在Java应用中集成并使用Plupload。 1. **Plupload的特性** - **多浏览器兼容**:Plupload通过Flash、...
在本文中,我们将深入探讨如何在Struts2框架下实现三种不同类型的文件上传:单个文件上传、固定数量文件上传以及不固定数量文件上传。 首先,为了实现文件上传,我们需要以下准备: 1. 获取Struts2.3.6的库文件,...
集成Struts2框架的FileUpload示例,展示了如何在Java Web应用中利用Plupload实现文件上传。Struts2是一个流行的MVC框架,用于构建动态Web应用。通过整合Plupload,开发者可以创建用户友好的文件上传界面,同时在...
在本文中,我们将深入探讨如何使用ExtJS的UploadDialog插件与Struts2.0框架相结合,实现一个功能完备的多文件上传功能。这是一项在Web应用开发中常见的需求,对于用户交互性和数据管理有着重要作用。 首先,让我们...
综上所述,结合Struts2和plupload,我们可以实现一个高效、用户友好的多文件上传功能。通过前端与后端的紧密配合,不仅可以提升用户体验,还能确保文件上传过程的稳定性和安全性。在实际开发中,还可以根据具体需求...
Plupload 是一个强大的多浏览器文件上传组件,支持断点续传、多线程上传和大文件上传等功能。在JavaScript环境中,它提供了丰富的API和多种皮肤,可以方便地集成到各种Web应用中。以下是对Plupload使用及核心知识点...
综上所述,"带进度条的多文件上传Struts"涉及了Struts框架的使用、plupload插件的集成、前端和后端的交互、以及用户体验优化等多个方面。理解并掌握这些知识点对于开发高效、用户友好的Web应用至关重要。
SwfUpload 是一个开源的JavaScript库,用于在Web应用程序中实现文件上传功能,它与Java后端技术如Struts2框架结合使用,可以提供高级的文件上传体验。在这个项目中,SwfUpload 被用来展示文件上传的进度、速度以及...
4. **使用第三方上传组件**:有许多第三方的文件上传插件和库,如Plupload、FineUploader等,它们针对各种浏览器进行了优化,可能提供更好的上传体验。 5. **服务器性能调优**:检查和优化服务器性能,如内存分配、...
本文将深入探讨“图片文件上传案例集合”中的几个关键技术和案例,包括uploadify、plupload、uploads、onloadfile以及Struts2MultipartFileUpload。 1. **uploadify**: Uploadify是一款基于jQuery的文件上传插件...
在IT行业中,大文件上传和进度条显示是用户体验的重要组成部分,尤其是在处理大量数据或多媒体文件时。本篇文章将深入探讨如何在JSP...通过合理的设计和实现,我们可以创建一个高效、可靠且用户友好的文件上传系统。
另一种jQuery文件上传方法是使用插件,例如`plupload`、`jQuery Form Plugin`或者`jQuery File Upload`。这些插件提供更丰富的功能,如多文件上传、进度条显示、错误处理等。`jqueryUpload.html`可能演示了其中一种...
8. **性能优化**:对于大批量的文件上传,可以考虑使用分块上传、多线程处理和流式传输技术,以提高上传效率。 通过以上步骤,我们可以构建一个基于插件和Struts的批量上传系统。这不仅简化了开发流程,也提高了...
在这个“Struts2+上传进度条完美运行”的主题中,我们将深入探讨如何在Struts2框架下实现文件上传功能,并结合进度条展示上传进度,提供用户友好的交互体验。 1. **Struts2文件上传**: Struts2通过`struts2-core`...
在Struts2框架中,可以利用其Action类和拦截器实现文件上传。Struts2的`FileUploadInterceptor`拦截器可以帮助我们处理文件上传的细节,如文件大小限制、类型检查等。 接着,我们来看Struts2的配置。在struts.xml...
SWFUpload 是一款开源的JavaScript库,用于在Web应用程序中实现文件上传功能,特别是支持多文件选择上传。它依赖于Adobe Flash技术,因此能够在不支持HTML5文件上传API的浏览器中提供类似的功能。以下是关于使用...
而Uploadify是一款JavaScript插件,它使用Flash技术实现异步文件上传,可以处理多文件同时上传,提供良好的用户体验。 在Struts2中集成Uploadify,主要是为了解决传统HTML表单提交时可能导致页面刷新的问题,以及...