`

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;
 }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics