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 > 

struts2 action接收文件上传数据处理

转自http://www.jb51.net/article/45170.htm 这篇文章主要介绍了struts2单个文件上传的两种实现方式,有需要的朋友可以参考一下 通过2种方式模拟单个文件上传,效...
  • gaohuimina
  • gaohuimina
  • 2016年10月19日 15:04
  • 3282

面试:----Struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来...
  • lihang_1994
  • lihang_1994
  • 2017年05月21日 14:49
  • 442

spring+struts2+mybatis 框架下图片上传

上传后input框中有图片地址,当保存页面信息时,图片的url也会保存到数据库,下次进入页面会到数据库查询图片url,并刷新到页面上...
  • qq_35048277
  • qq_35048277
  • 2017年04月01日 11:06
  • 493

struts2 上传文件在action 里的属性 name

struts2 上传文件在action里必须提供 private File url;  //strunts2 自动将文件流--》临时储存成tmp文件 private String urlContent...
  • sinat_35767703
  • sinat_35767703
  • 2017年03月28日 10:50
  • 349

jspSmartUpload实现图片的批量上传

batchUpload.html 批量上传 .tableStyle { border: 1px solid blue; padding: 1px; hei...
  • shijiebei2009
  • shijiebei2009
  • 2014年12月06日 19:18
  • 3463

jsp上传文件案例(有源码)

前言这两天做上传的功能,趁着端午节的时间在家里做了一个上传的案例。今天写个博客记录一下! 说明: 1.项目使用myeclipse开发工具 2.项目的源码的压缩格式是7z,可以下载一个7...
  • xinghuo0007
  • xinghuo0007
  • 2017年05月29日 20:51
  • 419

struts2上传文件,action接收到文件对象为null的解决方法

 解决方法:1. 注意html中form的几个属性,method="post" enctype="multipart/form-data"2. 查看文件大小,不要超过限制;3. 确保commons-f...
  • taijianyu
  • taijianyu
  • 2009年11月25日 22:18
  • 3468

kindeditor图片上传 struts2实现

一、kindeditor以及struts2部署搭建不再赘述,如需要请参考xxx二、kindeditor图片上传所依赖jar包在kindeditor\jsp\lib下有三、以下列出部分核心代码,如需要全...
  • itmyhome
  • itmyhome
  • 2014年11月16日 22:39
  • 3553

Struts2使用注解实现文件的上传与下载(一)

在Struts2中借助Commons FileUpload组件很容易实现文件的上传与下载,Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUplo...
  • sxwyf248
  • sxwyf248
  • 2012年07月29日 21:02
  • 11985

jsp input文件上传操作

近期要在前台jsp页面添加一个excel文件导入的功能,用input的file可以实现。下面为具体操作 jsp代码 直接从input file获取路径是不完整的,因为浏览器为了安全把input ...
  • super_wu1992
  • super_wu1992
  • 2016年08月26日 12:26
  • 1310
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2 文件上传(指定上传图片,单文件上传和批量上传放在一个jsp和Action中)
举报原因:
原因补充:

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