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>
    
    <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.jspresult>
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">20971520param>          
            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="

"
; $('#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;inew 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

name="batch"  class="cn.sxt.action.BatchUploadAction" >
            <result>/index.jspresult>
            ref name="fileUpload">
                name="maximumSize">20971520          
            ref>
         ref  name="defaultStack">ref>
        

你可能感兴趣的:(Struts2)