Struts2文件上传

单文件上传
uploadAction
需要在WebRoot下添加upload文件夹

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;


public class UploadAction extends ActionSupport{
      private File file;
      //文件名
      private String fileFileName;
      //文件的类型
      private String fileContentType;
      //上传
      public String upload() throws IOException {
          HttpServletRequest request=ServletActionContext.getRequest();
          String  path=request.getServletContext().getRealPath("/upload");
          InputStream is=new FileInputStream(file);
          OutputStream os=new FileOutputStream(new  File(path,fileFileName));
         byte[]  buffer=new byte[200];
         int length=0;
         while((length=is.read(buffer))!=-1){
             os.write(buffer,0,length);
         }
         os.close();
         is.close();
          return  Action.SUCCESS;
      }



    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }
    public String getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

}

struts.xml

<struts>
    <!--设置文件上传临时目录  -->
    <constant name="struts.multipart.saveDir" value="F:\"></constant>
    <!-- 设置文件上传的最大大小必选大于等于maximumSize -->
    <constant name="struts.multipart.maxSize" value="20971520"></constant>
    <package  name="default"  namespace="/"  extends="struts-default">

        <action  name="upload"  class="cn.sxt.action.UploadAction" method="upload">
            <result>/index.jsp</result>
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">20971520</param>          
            </interceptor-ref>
            <interceptor-ref  name="defaultStack"></interceptor-ref>
        </action>

    </package>
</struts>

jsp页面

<body>
  <form  action="upload.action" method="post"  enctype="multipart/form-data">
    文件:<input  type="file"  name="file"><br>
    <input type="submit"  value="上传"/>

  </form>
  </body>

批量文件上传其实就是利用数组实现多文件上传
batchUpload.jsp页面(用了jquery)

<script type="text/javascript"  src="js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $('#btn').click(function(){
                var field="<p><input type='file' name='file'/><input type='button'    value='删除' onclick='removed(this)''/></p>";
                $('#files').append(field);

            });
        });
        function removed(o){
            $(o).parent().remove();
        }
    </script>
  </head>
  <body>
  <form  action="batch.action" method="post"  enctype="multipart/form-data">
    文件:<input  type="file"  name="file"><input type="button" id="btn"  value="添加"/>
    <div id="files"></div>
    <input type="submit"  value="上传"/>

  </form>
  </body>
</html>

BatchUploadAction


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;


public class BatchUploadAction extends ActionSupport{
      private File[] file;
      //文件名
      private String[] fileFileName;
      //文件的类型
      private String[] fileContentType;
      //上传
      public String execute() throws IOException {
          HttpServletRequest request=ServletActionContext.getRequest();
          String  path=request.getServletContext().getRealPath("/upload");
         for(int i=0;i<file.length;i++){
          InputStream is=new FileInputStream(file[i]);
          OutputStream os=new FileOutputStream(new  File(path,fileFileName[i]));
         byte[]  buffer=new byte[200];
         int length=0;
         while((length=is.read(buffer))!=-1){
             os.write(buffer,0,length);
         }
         os.close();
         is.close();
         }
          return  Action.SUCCESS;
      }
    public File[] getFile() {
        return file;
    }
    public void setFile(File[] file) {
        this.file = file;
    }
    public String[] getFileFileName() {
        return fileFileName;
    }
    public void setFileFileName(String[] fileFileName) {
        this.fileFileName = fileFileName;
    }
    public String[] getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String[] fileContentType) {
        this.fileContentType = fileContentType;
    }

}

struts.xml

<action  name="batch"  class="cn.sxt.action.BatchUploadAction" >
            <result>/index.jsp</result>
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">20971520</param>          
            </interceptor-ref>
         <interceptor-ref  name="defaultStack"></interceptor-ref>
        </action>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值