码迷,mamicode.com
首页 > Web开发 > 详细

Struts2 单个文件上传/多文件上传

时间:2015-07-04 23:23:22      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war

单个文件上传

upload.jsp

<s:form action="upload2.action" method="post" theme="simple" enctype="multipart/form-data">
<tr>
       <td id="more">
             选择上传文件:<s:file name="file"></s:file><br>
             <s:submit type="button" value="submit"/>
         </td>
  </tr>
</s:form>

struts.xml

 <package name="struts2" extends="struts-default">
    <action name="upload2"class="com.hloytax.wg.upload?.UploadAction1">
           <result name="success">/success.jsp</result>
            <interceptor-ref name="fileUpload">
                 <param name="maximumSize">409600</param> //上传文件大小设置
                // <!--allowedTypes (可选) - 以逗号分割的contentType类型列表(例如text/html), <param name="contentType"> application/txt; </param>
<param name="allowedTypes"> </param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package>
UploadAction1.action
public class UploadAction1 extends ActionSupport {

    /**
     * 
     */


    private static final long serialVersionUID = 1L;
    
    private File file;  
      //文件名称  
    private String fileFileName;  
      
    //文件类型  
    private String fileContentType;  
    //注意:文件名称和文件类型的名称前缀必须相同,  
    省略get set 方法 
  
      
    @Override  
    public String execute() throws Exception{     
          
        //获取需要上传文件的文件路径  
        File uploadFile=new File(ServletActionContext.getServletContext().getRealPath("uploadFile"));  
        //判断文件是否上传,如果上传的话将会创建该目录  
        if(!uploadFile.exists()){  
            uploadFile.mkdir(); //创建该目录  
        }  
          
        /*//第一种文件上传的方法  
        //声明文件输入流,为输入流指定文件路径  
        FileInputStream input=new FileInputStream(file);  
        //获取输出流,获取文件的文件地址及名称  
        FileOutputStream out=new FileOutputStream(uploadFile + "\\" +fileFileName);  
          
        try{  
            byte[] b=new byte[1024];//每次写入的大小  
            int i=0;  
            while((i=input.read(b))>0){  
                out.write(b,0,i);  
            }  
        }catch(Exception e){  
            e.printStackTrace();  
        }finally{  
            input.close();  
            out.close();  
        }  
          */
          
          
        //第二种文件上传的方法  
        //FileUtils.copyFile(file,new File(uploadFile+"\\"+fileFileName));  
       // FileUtils.copyFile(file,new File(uploadFile,fileFileName));  
       // System.out.println(uploadFile);
          
        //第三种方法  
      BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream(file)));  
      BufferedWriter bWriter=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(uploadFile+"\\"+fileFileName)));  
      System.out.println(uploadFile);   
      try{  
          char[] str=new char[1024];  
          int i=0;  
          while((i=bReader.read(str))>0){  
              bWriter.write(str,0,i);   
          }  
      }catch(Exception e){  
          e.printStackTrace();  
      }finally{  
         bReader.close();  
          bWriter.close();  
          uploadFile.delete();  
      }  
          
        return SUCCESS;  
    }  
  

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

多文件上传:

private List<File> file;
private List<String> fileContentType;
private List<String> fileFileName;
private String savePath; 省略get set 方法 上传方法 参照单文件上传
@Override
    public String execute() throws Exception {
        List<File> files= getFile();
        if (files !=null) {
                for (int i = 0; i < files.size(); i++) {
                    FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getFileFileName().get(i));
                    //建立上传文件的输入流
                    System.out.println(getSavePath());
                    FileInputStream fis = new FileInputStream(files.get(i));

        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) > 0) {
             fos.write(buffer, 0, len);
         }
         fis.close();
         fos.close();
     }
 }
      return SUCCESS;
        
            }

    /**
     * 返回上传文件保存的位置
     *
     * @return
     * @throws Exception
     */
    public String getSavePath() throws Exception {
        return ServletActionContext.getServletContext().getRealPath(savePath);
    }
    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }

Struts2 单个文件上传/多文件上传

标签:

原文地址:http://www.cnblogs.com/aGboke/p/4621348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!