`

jquery-form/struts2文件上传

 
阅读更多

转载: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的整合

    **jQuery与Struts2整合详解** 在Web开发中,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。而Struts2是一个基于MVC设计模式的Java Web框架,用于构建可维护性和可扩展性高的...

    Struts2 JQuery 文件上传 进度条

    本教程将详细讲解如何在Struts2中集成JQuery File Upload插件,实现文件上传的进度条效果。 首先,我们需要在项目中引入Struts2和JQuery的相关库。Struts2提供了强大的Action支持,而JQuery则是一个强大的...

    struts2+jquery之form插件实现异步上传

    通过以上步骤,你就可以实现Struts2和jQuery form插件结合的异步文件上传功能。这个过程中,关键在于正确配置和交互,以及处理好前后端的数据交换。记得在实际项目中,还需要考虑文件大小限制、错误处理、安全性(如...

    jquery-form 异步提交表单

    接着,你可以通过以下方式下载并引入`jquery.form.js`文件: ```html &lt;script src="https://code.jquery.com/jquery-3.x.y.min.js"&gt;&lt;/script&gt; &lt;script src="path/to/jquery.form.min.js"&gt;&lt;/script&gt; ``` ### 使用...

    struts2下jquery-ui的全部实例

    在提供的`struts2_jquery_ui_all`压缩包中,应包含各种示例代码,如Action类、JSP页面和配置文件,供学习者逐个练习和理解。通过这些实例,初学者能够逐步掌握如何在Struts2环境中有效地利用jQuery UI提升Web应用的...

    JQuery EasyUI 整合struts2 代码下载

    标题 "JQuery EasyUI 整合struts2 代码下载" 涉及到的是一个Web开发中的技术组合,主要集中在前端的JQuery EasyUI框架与后端的Struts2框架的集成应用。JQuery EasyUI是一个基于jQuery的UI库,提供了丰富的组件,如...

    jquery+struts2实现文件上传

    在本文中,我们将深入探讨如何使用jQuery和Struts2框架实现文件上传功能。这是一个常见的需求,在Web应用中,用户可能需要上传图片、文档等文件。jQuery是一个轻量级的JavaScript库,提供了丰富的交互效果和API,而...

    java struts2 文件上传 支持大文件

    Java Struts2 文件上传是Java Web开发中常见的一项功能,特别是在处理大文件时,需要考虑性能和用户体验。Struts2框架提供了丰富的插件和配置来支持文件上传,其中包括进度条显示,以提升用户交互体验。以下是对这个...

    Struts2文件上传带进度条页面无刷新

    "Struts2文件上传带进度条页面无刷新"的实现涉及多个技术点,包括Struts2的文件上传插件、AJAX异步通信以及前端进度条展示。 首先,Struts2的文件上传依赖于`struts2-upload-plugin`。这个插件扩展了Struts2的核心...

    jquery.form.js(最新的)

    这个库是jQuery的一个扩展,它为处理表单数据提供了一种方便且强大的方式,包括无刷新的提交、多部分表单支持以及上传文件。最新版本的jQuery.form.js通常包含了一系列优化和改进,以提高性能和兼容性。 在**Struts...

    AjaxFileUpload Struts2 多文件上传

    本篇文章将深入讲解如何利用AjaxFileUpload与Struts2实现多文件上传,并结合jQuery进行前端交互。 首先,我们需要在项目中引入必要的库。Struts2提供了struts2-jquery-plugin,这是一个基于jQuery的插件,包含了...

    struts2+ajax+jquery

    在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...

    struts2+jquery之form插件实现异步上传图片并显示

    在这个场景中,我们将深入探讨如何利用jQuery的form插件来实现在Struts2环境中进行图片上传,并在前端进行实时预览。 1. **Struts2 框架**: Struts2是一个基于MVC设计模式的Java Web应用框架,它提供了一种组织...

    Struts2 JQuery同步上传图片

    这个页面是用户与应用交互的界面,它包含了一个Struts2的表单(`&lt;s:form&gt;`),用于文件上传。表单的属性`enctype`设置为`multipart/form-data`,这是上传文件时必须的。表单中有两个字段:一个文本输入框(`...

    Struts2+jquery.form.js实现图片与文件上传的方法

    在本文中,我们将深入探讨如何使用Struts2框架与jquery.form.js插件来实现图片和文件的异步上传。这是一个常见的需求,特别是在构建交互性强的Web应用时,用户需要能够方便快捷地上传文件,如图片。 首先,让我们...

    struts+jquery文件上传

    Struts2和jQuery是两种非常流行的Java Web开发技术。Struts2是一个强大的MVC(Model-...通过结合Struts2和jQuery,我们可以创建一个高效且用户友好的文件上传功能,既满足了后台处理的需求,又提升了前端的交互体验。

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    struts 单文件上传和多文件上传带进度条

    在Action类中,我们需要定义一个或多个`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`类型的属性,这些属性会被用来存储上传的文件。 对于单文件上传,我们需要在表单中添加一个`...

    Struts2+jQuery(不用JSON)实现局部刷新

    Struts2和jQuery是两种非常流行的开源技术,它们在Web开发中有着广泛的应用。Struts2作为MVC框架,主要用于处理后端业务逻辑,而jQuery则是一个强大的JavaScript库,简化了前端DOM操作、事件处理以及AJAX交互。在这...

    jquery 插件ajaxfileupload与struts2结合 实现异步上传图片

    在本文中,我们将深入探讨如何将jQuery插件AjaxFileUpload与Struts2框架结合,以实现异步图片上传的功能。这种技术在现代Web应用中非常常见,它提升了用户体验,允许用户在不刷新整个页面的情况下上传文件,特别是...

Global site tag (gtag.js) - Google Analytics