转载:http://blog.csdn.net/Xwin1989/article/details/8979239
1、form
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}
2、js脚本
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}
3、struts2拦截
/**
*
*/
package com.test.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public HttpServletResponse getResponse() {
HttpServletResponse response = null;
try {
response = ServletActionContext.getResponse();
} catch (RuntimeException e) {
}
return response;
}
public HttpServletRequest getRequest() {
HttpServletRequest request = null;
try {
request = ServletActionContext.getRequest();
} catch (RuntimeException e) {
}
return request;
}
@Override
public String execute() throws Exception {
Map<String, Object> map = ActionContext.getContext().getParameters();
boolean isMultipart = ServletFileUpload
.isMultipartContent(getRequest());
if (isMultipart) {// type=multipart/form-data
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(1024 * 1024);// 设置上传文件的最大容量
List<FileItem> items = upload.parseRequest(getRequest());// 取得表单全部数据
for (FileItem item : items) {
if (item.isFormField()) {// 如果不是文件类型
// String name = item.getFieldName(); 表单中某个控件的名称
// String value = item.getString(); 表单中某个控件的值
} else {
String filename = item.getName();
File f = new File(filename); // 保存的文件
item.write(f);// 保存文件
}
}
} else {
}
HttpServletRequest request = getRequest();
FileOutputStream fos = new FileOutputStream("d:\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
return SUCCESS;
}
}
相关推荐
**jQuery与Struts2整合详解** 在Web开发中,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。而Struts2是一个基于MVC设计模式的Java Web框架,用于构建可维护性和可扩展性高的...
本教程将详细讲解如何在Struts2中集成JQuery File Upload插件,实现文件上传的进度条效果。 首先,我们需要在项目中引入Struts2和JQuery的相关库。Struts2提供了强大的Action支持,而JQuery则是一个强大的...
通过以上步骤,你就可以实现Struts2和jQuery form插件结合的异步文件上传功能。这个过程中,关键在于正确配置和交互,以及处理好前后端的数据交换。记得在实际项目中,还需要考虑文件大小限制、错误处理、安全性(如...
接着,你可以通过以下方式下载并引入`jquery.form.js`文件: ```html <script src="https://code.jquery.com/jquery-3.x.y.min.js"></script> <script src="path/to/jquery.form.min.js"></script> ``` ### 使用...
在提供的`struts2_jquery_ui_all`压缩包中,应包含各种示例代码,如Action类、JSP页面和配置文件,供学习者逐个练习和理解。通过这些实例,初学者能够逐步掌握如何在Struts2环境中有效地利用jQuery UI提升Web应用的...
标题 "JQuery EasyUI 整合struts2 代码下载" 涉及到的是一个Web开发中的技术组合,主要集中在前端的JQuery EasyUI框架与后端的Struts2框架的集成应用。JQuery EasyUI是一个基于jQuery的UI库,提供了丰富的组件,如...
在本文中,我们将深入探讨如何使用jQuery和Struts2框架实现文件上传功能。这是一个常见的需求,在Web应用中,用户可能需要上传图片、文档等文件。jQuery是一个轻量级的JavaScript库,提供了丰富的交互效果和API,而...
Java Struts2 文件上传是Java Web开发中常见的一项功能,特别是在处理大文件时,需要考虑性能和用户体验。Struts2框架提供了丰富的插件和配置来支持文件上传,其中包括进度条显示,以提升用户交互体验。以下是对这个...
"Struts2文件上传带进度条页面无刷新"的实现涉及多个技术点,包括Struts2的文件上传插件、AJAX异步通信以及前端进度条展示。 首先,Struts2的文件上传依赖于`struts2-upload-plugin`。这个插件扩展了Struts2的核心...
这个库是jQuery的一个扩展,它为处理表单数据提供了一种方便且强大的方式,包括无刷新的提交、多部分表单支持以及上传文件。最新版本的jQuery.form.js通常包含了一系列优化和改进,以提高性能和兼容性。 在**Struts...
本篇文章将深入讲解如何利用AjaxFileUpload与Struts2实现多文件上传,并结合jQuery进行前端交互。 首先,我们需要在项目中引入必要的库。Struts2提供了struts2-jquery-plugin,这是一个基于jQuery的插件,包含了...
在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...
在这个场景中,我们将深入探讨如何利用jQuery的form插件来实现在Struts2环境中进行图片上传,并在前端进行实时预览。 1. **Struts2 框架**: Struts2是一个基于MVC设计模式的Java Web应用框架,它提供了一种组织...
这个页面是用户与应用交互的界面,它包含了一个Struts2的表单(`<s:form>`),用于文件上传。表单的属性`enctype`设置为`multipart/form-data`,这是上传文件时必须的。表单中有两个字段:一个文本输入框(`...
在本文中,我们将深入探讨如何使用Struts2框架与jquery.form.js插件来实现图片和文件的异步上传。这是一个常见的需求,特别是在构建交互性强的Web应用时,用户需要能够方便快捷地上传文件,如图片。 首先,让我们...
Struts2和jQuery是两种非常流行的Java Web开发技术。Struts2是一个强大的MVC(Model-...通过结合Struts2和jQuery,我们可以创建一个高效且用户友好的文件上传功能,既满足了后台处理的需求,又提升了前端的交互体验。
在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...
在Action类中,我们需要定义一个或多个`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`类型的属性,这些属性会被用来存储上传的文件。 对于单文件上传,我们需要在表单中添加一个`...
Struts2和jQuery是两种非常流行的开源技术,它们在Web开发中有着广泛的应用。Struts2作为MVC框架,主要用于处理后端业务逻辑,而jQuery则是一个强大的JavaScript库,简化了前端DOM操作、事件处理以及AJAX交互。在这...
在本文中,我们将深入探讨如何将jQuery插件AjaxFileUpload与Struts2框架结合,以实现异步图片上传的功能。这种技术在现代Web应用中非常常见,它提升了用户体验,允许用户在不刷新整个页面的情况下上传文件,特别是...