sturts2实现上传

原创 2012年03月28日 11:19:04

package or

导入架包:

commons-fileupload-1.2.1.jar

commons -io.jar

g.fzrb.newsmanager.action.struts;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.hi.SpringContextHolder;
import org.hi.common.attachment.action.cust.FtpUtil;
import org.hi.common.attachment.model.Attachment;
import org.hi.common.attachment.service.AttachmentManager;
import org.hi.framework.HiConfigHolder;
import org.hi.framework.web.BusinessException;
import org.hi.i18n.util.I18NUtil;

import com.opensymphony.xwork2.ActionSupport;

public class UpLoadAction extends ActionSupport {
 private File[] image;
 private String[] imageContentType; // 文件的内容类型
 private String[] imageFileName; // 上传文件名
 private List<Attachment> imageFiles = new ArrayList<Attachment>();

 /**
  * @return the image
  */
 public File[] getImage() {
  return image;
 }

 /**
  * @param image
  *            the image to set
  */
 public void setImage(File[] image) {
  this.image = image;
 }

 /**
  * @return the imageContentType
  */
 public String[] getImageContentType() {
  return imageContentType;
 }

 /**
  * @param imageContentType
  *            the imageContentType to set
  */
 public void setImageContentType(String[] imageContentType) {
  this.imageContentType = imageContentType;
 }

 /**
  * @return the imageFileName
  */
 public String[] getImageFileName() {
  return imageFileName;
 }

 /**
  * @param imageFileName
  *            the imageFileName to set
  */
 public void setImageFileName(String[] imageFileName) {
  this.imageFileName = imageFileName;
 }

 /**
  * @return the imageFiles
  */
 public List<Attachment> getImageFiles() {
  return imageFiles;
 }

 /**
  * @param imageFiles
  *            the imageFiles to set
  */
 public void setImageFiles(List<Attachment> imageFiles) {
  this.imageFiles = imageFiles;
 }

 /**
  * @return the maxSize
  */
 public String getMaxSize() {
  return maxSize;
 }

 /**
  * @param maxSize
  *            the maxSize to set
  */
 public void setMaxSize(String maxSize) {
  this.maxSize = maxSize;
 }

 public static String getExt(String fileName)

 {

  return fileName.substring(fileName.lastIndexOf("."));

 }

 private String maxSize = HiConfigHolder
   .getProperty("hi.upload.ftp.maxSize") == null ? "100"
   : HiConfigHolder.getProperty("hi.upload.ftp.maxSize");
 private static final int BUFFER_SIZE = 16 * 1024;
 AttachmentManager attachmentMgr = (AttachmentManager) SpringContextHolder
   .getBean(Attachment.class);

 public String execute() throws Exception {
  // 原文件
  File[] src = this.getImage();
  System.out.println(src.length);
  Attachment atta = null;
  // 目标地址
  String dstPath = ServletActionContext.getServletContext().getRealPath(
    "/")
    + "upload";
  String disp = "/upload/attachment/";
  String imageFileName = "";
  String type = "";
  // 循环存放原文件
  for (int i = 0; i < src.length; i++) {
   atta = new Attachment();
   // 给源文件重新名称
   type = this.getImageContentType()[i] + type;
   type += ",";
   String na = getImageFileName()[i];
   imageFileName = imageFileName + na;
   imageFileName += ",";
   ServletActionContext.getRequest().setAttribute(
     "imageFileName" + (i + 1), na);
   // 声明目标文件
   File dst = new File( dstPath+ "/" + imageFileName);
   // 将源文件拷贝到目标地
   copy(src[i], dst);
  }
  System.out.println(imageFileName);
  atta.setFileType(type);
  atta.setFileName(imageFileName);
  atta.setAttachmentPath(disp + imageFileName);
  attachmentMgr.saveAttachment(atta);
  return SUCCESS;
 }
 // 将指定的文件拷贝到指定的目录
 public static void copy(File src, File dst) {
  InputStream in = null;
  OutputStream out = null;
  try {
   in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
   System.out.println(src);
   out = new BufferedOutputStream(new FileOutputStream(dst),
     BUFFER_SIZE);
   byte[] b = new byte[1024];
   int len = 0;
   while ((len = in.read(b)) != -1) {
    out.write(b, 0, len);
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   try {
    if (null != in) {
     in.close();
    }
    if (null != out) {
     out.close();
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 // 根据当前时间给文件取指定的名字
 public static String getImageFileName(String fileName) {
  Random rnd = new Random();
  int rn = rnd.nextInt(1000);
  return new Date().getTime() + rn + getExtention(fileName);
 }

 // 获取文件的后缀
 public static String getExtention(String fileName) {
  int pos = fileName.lastIndexOf(".");
  return fileName.substring(pos);
 }

}

 

 

 


 public InputStream getDownloadFile(){
        return ServletActionContext.getServletContext().getResourceAsStream("/upload/Struts2.ppt");
       
    }

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
//下载的配置
 <action name="download" class="com.demo.action.DownloadAction">
            <result name="success" type="stream">
               <param name="contentType">application/vnd.ms-powerpoint</param>
               <param name="contentDisposition">filename="Struts2.ppt"</param>
               <param name="inputName">downloadFile</param>
            </result>
        </action>
//上传的配置
<action name="upload" class="com.demo.action.UploadAction">
            <result name="success">/uploadsuccess.jsp</result>
            <result name="input">/upload.jsp</result>
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">4096000</param>
                <param name="allowedTypes">application/vnd.ms-powerpoint</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>

 

sturts2+Jquery uploadify的多文件上传功能

今天我为大家带来sturts二的多文件上传功能,首先我想说下我在网上收了好多资料都没有找到我想要的......我想要的是一次性上传多个文件。可限制上传文件类型的那种。。。好吧 下面我开始给大家带来例子...

sturts2中上传文件拦截器参数allowedType注意事项

Struts2文件上传,基本的配置如下: UploadFileAction Java代码   package jp.co.ricoh.action.upload;     i...

sturts图片上传到服务器

 sturts-config.xml
  • xu1314
  • xu1314
  • 2011年05月18日 18:37
  • 424

sturts2拦截器执行顺序理解以及拦截器机制实现原理

【Struts2】Sturts2如何实现JSON的数据输出,完成Ajax响应

相关文章: 【JSON介绍】什么是JSON? 【Ajax】Ajax介绍 【Ajax】XMLHttpRequest介绍以及在前端如何实现Ajax 【Struts2】Sturts2如何实现JSON的数据输...

sturts2 struts.xml配置问题

Struts.xml的配置详情 分割文件 Struts.xml include file="struts_user.xml"/> include file="struts_shangpi...

【sturts2】Eclipse下User Library的发布

一直使用eclipse做开发,今天基哥给提出个问题,试了好多方法才解决。 问题描述:普通的Web项目,ssh框架集合,但使用的jar包并未复制到WEB-INF/lib目录下,而是引用的User ...

在sturts2中ActionContext和ServletActionContext的区别

1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息...
  • ZFX5130
  • ZFX5130
  • 2013年08月02日 11:16
  • 613

sturts2 token防止表单重复提交

1.在html中定义struts2标签,会生成如下标签:     服务器在生成表单的时候同时生成一个CSRF token,插入到表单的一个hidden field里面,并且把这个token记录在...

javascript中用jquery做ajax读取sturts2中action的返回信息案例

javascript中用jquery做ajax读取sturts2中action的返回信信息的步骤 1、引入包(本文中的包全部引自struts-2.1.8.1\lib): struts2-jso...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sturts2实现上传
举报原因:
原因补充:

(最多只允许输入30个字)