struts2 文件上传(指定上传图片,单文件上传和批量上传放在一个jsp和Action中)

1.添加jar

Commons-fileupload.jar,

Commons-io.jar

2.定义Action类

package com.test.action;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpAction extends ActionSupport {

 private static final long serialVersionUID = 572146812454l;

 private static final int BUFFER_SIZE = 16 * 1024;

 //单文件上传

 private File myFile;

 private String contentType;

 private String fileName;

 private String imageFileName;

 private String caption;

 

 

 //批量上传文件

  private List < File > uploads = new ArrayList < File > ();

     private List < String > uploadFileNames = new ArrayList < String > ();

     private List < String > uploadContentTypes = new ArrayList < String > ();

     

     public List < File > getUpload() {

         return this .uploads;

    } 

     public void setUpload(List < File > uploads) {

         this .uploads = uploads;

    } 

     public List < String > getUploadFileName() {

         return this .uploadFileNames;

    } 

     public void setUploadFileName(List < String > uploadFileNames) {

         this .uploadFileNames = uploadFileNames;

    } 

     public List < String > getUploadContentType() {

         return this .uploadContentTypes;

    } 

     public void setUploadContentType(List < String > contentTypes) {

         this .uploadContentTypes = contentTypes;

    } 

 public void setMyFileContentType(String contentType) {

  this.contentType = contentType;

 }

 public void setMyFileFileName(String fileName) {

  this.fileName = fileName;

 }

 public void setMyFile(File myFile) {

  this.myFile = myFile;

 }

 public String getImageFileName() {

  return imageFileName;

 }

 public String getCaption() {

  return caption;

 }

 public void setCaption(String caption) {

  this.caption = caption;

 }

 private static void copy(File src, File dst) {

  try {

   InputStream in = null;

   OutputStream out = null;

   try {

    in = new BufferedInputStream(new FileInputStream(src),

      BUFFER_SIZE);

    out = new BufferedOutputStream(new FileOutputStream(dst),

      BUFFER_SIZE);

    byte[] buffer = new byte[BUFFER_SIZE];

    while (in.read(buffer) > 0) {

     out.write(buffer);

    }

   finally {

    if (null != in) {

     in.close();

    }

    if (null != out) {

     out.close();

    }

   }

  catch (Exception e) {

   e.printStackTrace();

  }

 }

 private static String getExtention(String fileName) {

  System.out.println("filename="+fileName);

  int pos = fileName.lastIndexOf(".");

  return fileName.substring(pos);

 }

 @Override

 public String execute() throws InterruptedException {

  

  SaveOneFile(myFile,fileName);//保存单文件上传

  for(int i=0;i<uploadFileNames.size();i++)

  {

   Thread.sleep(200);//为了不使文件名重复

   SaveOneFile(uploads.get(i),uploadFileNames.get(i));//保存单文件上传

  }

  return SUCCESS;

 }

 

 private void SaveOneFile(File file,String fileName)

 {

  imageFileName = new Date().getTime() + getExtention(fileName);

  

  File imageFile = new File(ServletActionContext.getServletContext()

    .getRealPath("UploadImages")

    "/" + imageFileName);

  copy(file, imageFile);

 }

}

(注意:保存文件的目录在Web-Inf下名称为:UploadImages

)

3.定义Struts.xml

 <action name ="fileUpload" class ="com.test.action.FileUpAction" > 

            <interceptor-ref name ="fileUpload" >

             <!-- 单位为字节 这里的大小是指每个文件上传的大小,若多个文件上传指每一个文件的大小 -->

       <param name="maximumSize">4000000</param>

            <!--指定上传的文件类型-->

              <param name ="allowedTypes" > 

                    image/bmp,image/png,image/gif,image/pjpeg

                </param> 

             

            </interceptor-ref> 

            <interceptor-ref name="defaultStack"></interceptor-ref>

            

             

            <result name ="success" > /FileUp/ShowUpload.jsp </result > 

        </action > 

4.定义jsp文件

 <s:form action ="fileUpload" theme="simple" method ="POST" enctype ="multipart/form-data" > 

        <s:file name ="myFile" label ="Image File" /> <br>

        <s:textfield name ="caption" label ="Caption" />   <br>   

        <br>

        批量上传<br>

        <s:file label ="File (1)" name ="upload" /> <br>   

    <s:file label ="File (2)" name ="upload" /> <br>   

    <s:file label ="FIle (3)" name ="upload" /> <br>   

        

        <s:submit /> 

    </s:form > 

阅读更多
个人分类: struts2 学习笔记
想对作者说点什么? 我来说一句

struts2 批量上传 图片+文件

2010年10月21日 3.51MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭