转载: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的异步表单提交【jquery-form.js,其中的Demo是基于SSH的,里面有Struts标签。欢迎下载!
struts2+jquery之form插件实现异步上传
本文实例讲述了Struts2+jquery.form.js实现图片与文件上传的方法。分享给大家供大家参考,具体如下: jquery.form.js是jQuery的一个官方用语支持异步上传文件的插件。官方网站:http://plugins.jquery.com/form/ ...
最新从jquery.form.js社区下载下来的。 并与strust1.x实现一个页面多个表单的ajax提交 返回当前页面值
struts2+jquery之form插件实现异步上传图片并显示
自己整理的jquery+json+struts2异步传输的例子,包括异步提交form,异步传输json对象。
2. 采用jquery.form.js实现ajaxForm提交表单或上传文件到服务器。 3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹...
本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文。 单文件和多文件的实现区别主要修改两点, 一是插件ajaxfileupload.js里接收file文件ID的方式 二是后台action是数组形式...
下载JS插件jquery-1.4.2.min.js和 jquery.form.js,在html中引入这两个js文件,通过以上的方式,我们就可以通过页面无刷新,在Struts2中无需要进行页面跳转来进行文件上传!
下面小编就为大家带来一篇浅谈struts1 & jquery form 文件异步上传。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
整合了struts2 jquery的formValidator表单验证的页面代码, 包含验证用户是否存在,提交表单等
最基本的jquery uploadify 的文件上传,struts2版。其中包含jquery uploadify资源包。保证代码的运行。拿出来和大家分享。
ajax刷新表格数据 ajaxform异步提交表单数据, jquery.validate验证表单数据
fullCalendar+fancybox+struts2实现的日程安排效果。 前台采用fullCalendar实现日历效果,同一天可以增加多个日程安排,当效果超过配置的最大数量时,将会隐藏多余的日程安排,通过单击超链接显示当天的所有日程安排...
1、jQuery实现动态添加删除文件上传框 2、获取文件上传框的ID 3、ajaxfileupload.js里将ID数组转换为需要的Object数组 依次解决上面问题 一、实现动态添加删除文件上传框 <body> <form action="" enctype...
我看过一个比较好的功能是,利用strut2的拦截器和*-Validation.xml文件以及标签(strut2标签,主要是form-close.ftl这个模板文件),自动生成页面的Form前端验证。(当然辅助的客户端js文件如jquery/jquery-...
完整的Uploadify+Struts2使用案例,前台用jQuery的DOM技术生成隐藏的input,后台由action负责上传,上传结束后提交前台的form。再由另外一个action完成链接和其他信息的持久化工作。
form提交后不跳转,增强用户体验。 工程采用jquery写前端,struts2做一个跳转返回数据。