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

原创 2012年04月07日 22:06:04

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 > 

相关文章推荐

图片上传到数据库的总结

转眼间在博客园里待了快一年了,我还能记得去年的这个时候老师有个项目,在这个项目里需要把图片保存到数据库里,以前我做的就是把路径保存到数据库,后来为了实现这个功能我可是费了不少劲啊,问东问西的最后还是在...
  • ovipo
  • ovipo
  • 2009年07月29日 17:04
  • 605

Struts2+Spring+JDBC 实现图片上传与显示

数据库为oracle,图片存储类型为Blob。 要想往数据库里插入,需要两个步骤: 1、插入空值(empty_blob()); 2、更新Blob字段。  DAO如下: public cl...

图片的上传和预览(上传到oracle数据库)

注意: 1.数据库字段使用clob存储 2.实体类中使用byte数组存图片流 3.图片预览以流的形式输出 文件上传下载预览辅助类代码: package com.yuanxin.app.ap...

JAVA EE项目常用之 struts1.2 文件上传的两种方法

struts1,springMVC 框架上传下载文件的方法

Struts1.3——文件上传和下载

本文介绍了Struts实现文件上传和下载的方法
  • ggGavin
  • ggGavin
  • 2016年07月28日 18:16
  • 1551

利用struts1 formfile实现文件上传功能

一、界面配置      /images/common/csw_toux.gif"/>    账户管理> 账号管理 > 资料设置  您可以在下方选择自己喜欢的头像,更新后的头像将稍后显示在其它页面!...

struts 1.2 文件上传与下载

/** Generated by MyEclipse Struts* Template path: templates/java/JavaClass.vtl*/package com.action;i...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

struts1.2下实现文件上传进度条

标题:struts1.2下实现文件上传进度条作者:lee353086(kagula)最后修改日期:2007-11-23内容概要:    本文只是对《采用dwr+ajax和struts开发文件上传进度条...

struts1中的文件上传

在struts1和2中,分别对 commons-fileupload组件进行了包装,使文件上传操作更方便。 本文讲解如何使用struts1上传文件。 步骤: 1 编写jsp页面 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2 文件上传(指定上传图片,单文件上传和批量上传放在一个jsp和Action中)
举报原因:
原因补充:

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