• Struts2 文件上传


    文件上传

    界面

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     2 <%
     3     String homePage = request.getContextPath();
     4 %>
     5 <!DOCTYPE html>
     6 <html>
     7 <head>
     8     <title>文件上传</title>
     9 </head>
    10 <body>
    11     <form action="<%=homePage%>/updateAndDownload/upLoadDo.action" method="post" enctype="multipart/form-data">
    12         <table>
    13             <caption>文件上传</caption>
    14             <tr>
    15                 <td>文件标题</td>
    16                 <td>
    17                     <input type="text" name="title" />
    18                 </td>
    19             </tr>
    20             <tr>
    21                 <td>选择文件</td>
    22                 <td>
    23                     <input type="file" name="upload" />
    24                 </td>
    25             </tr>
    26             <tr>
    27                 <td colspan="2" align="right">
    28                     <input type="submit" value="上传" />
    29                 </td>
    30             </tr>
    31         </table>
    32     </form>
    33 </body>
    34 </html>

    处理上传的Action

     1 package org.zln.updateAndDownload.action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 import org.apache.struts2.ServletActionContext;
     5 
     6 import java.io.*;
     7 import java.util.UUID;
     8 
     9 /**
    10  * Created by sherry on 000010/7/10 9:52.
    11  */
    12 public class FileUpAndDownload extends ActionSupport {
    13 
    14     private String title;
    15 
    16     /*上传文件*/
    17     private File upload;
    18     /*文件类型*/
    19     private String uploadContentType;
    20     /*文件名*/
    21     private String uploadFileName;
    22 
    23     /*保存路径*/
    24     private String savePath;
    25 
    26     public String upLoadUI(){
    27         return SUCCESS;
    28     }
    29 
    30     public String upLoadDo() throws IOException {
    31         /**/
    32         File outWrite = new File(getSavePath());
    33         if (!outWrite.exists()){
    34             outWrite.mkdir();
    35         }
    36         FileOutputStream fileOutputStream = new FileOutputStream(getSavePath()+File.separatorChar+ UUID.randomUUID()+getUploadFileName());
    37         /**/
    38         FileInputStream fileInputStream = new FileInputStream(upload);
    39 
    40         byte[] bytes = new byte[1024];
    41         int len = 0;
    42         while ((len = fileInputStream.read(bytes)) > 0){
    43             fileOutputStream.write(bytes,0,len);
    44         }
    45         fileOutputStream.close();
    46         fileInputStream.close();
    47         return SUCCESS;
    48     }
    49 
    50     public String getTitle() {
    51         return title;
    52     }
    53 
    54     public void setTitle(String title) {
    55         this.title = title;
    56     }
    57 
    58     public File getUpload() {
    59         return upload;
    60     }
    61 
    62     public void setUpload(File upload) {
    63         this.upload = upload;
    64     }
    65 
    66     public String getUploadContentType() {
    67         return uploadContentType;
    68     }
    69 
    70     public void setUploadContentType(String uploadContentType) {
    71         this.uploadContentType = uploadContentType;
    72     }
    73 
    74     public String getUploadFileName() {
    75         return uploadFileName;
    76     }
    77 
    78     public void setUploadFileName(String uploadFileName) {
    79         this.uploadFileName = uploadFileName;
    80     }
    81 
    82     //返回文件保存路径
    83     public String getSavePath() {
    84         return ServletActionContext.getServletContext().getRealPath(savePath);
    85     }
    86 
    87     public void setSavePath(String savePath) {
    88         this.savePath = savePath;
    89     }
    90 }

    配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7 
     8     <!--必须继承default才能使用其全局跳转页面-->
     9     <package name="updateAndDownload" namespace="/updateAndDownload" extends="default">
    10         <!--文件上传-->
    11         <action name="upLoadUI" class="org.zln.updateAndDownload.action.FileUpAndDownload" method="upLoadUI">
    12             <result>/WEB-INF/updateAndDownload/upLoadUI.jsp</result>
    13         </action>
    14         <action name="upLoadDo" class="org.zln.updateAndDownload.action.FileUpAndDownload" method="upLoadDo">
    15             <param name="savePath">/upload</param>
    16             <result name="success">/WEB-INF/updateAndDownload/upLoadSucc.jsp</result>
    17             <result name="input">/WEB-INF/updateAndDownload/upLoadUI.jsp</result>
    18         </action>
    19     </package>
    20 
    21 </struts>
    <constant name="struts.multipart.maxSize" value="1000000000"/>

    如何上传多个文件?

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     2 <%
     3     String homePage = request.getContextPath();
     4 %>
     5 <!DOCTYPE html>
     6 <html>
     7 <head>
     8     <title>文件上传</title>
     9 </head>
    10 <body>
    11     <form action="<%=homePage%>/updateAndDownload/upLoadDo.action" method="post" enctype="multipart/form-data">
    12         <table>
    13             <caption>文件上传</caption>
    14             <tr>
    15                 <td>文件标题</td>
    16                 <td>
    17                     <input type="text" name="title" />
    18                 </td>
    19             </tr>
    20             <tr>
    21                 <td>选择文件</td>
    22                 <td>
    23                     <input type="file" name="upload" />
    24                 </td>
    25             </tr>
    26             <tr>
    27                 <td>选择文件</td>
    28                 <td>
    29                     <input type="file" name="upload" />
    30                 </td>
    31             </tr>
    32             <tr>
    33                 <td>选择文件</td>
    34                 <td>
    35                     <input type="file" name="upload" />
    36                 </td>
    37             </tr>
    38             <tr>
    39                 <td colspan="2" align="right">
    40                     <input type="submit" value="上传" />
    41                 </td>
    42             </tr>
    43         </table>
    44     </form>
    45     <hr/>
    46     <a href="<%=homePage%>/updateAndDownload/showUploadFiles.action">显示已上传文件</a><br/>
    47 </body>
    48 </html>
      1 package org.zln.updateAndDownload.action;
      2 
      3 import com.opensymphony.xwork2.ActionContext;
      4 import com.opensymphony.xwork2.ActionSupport;
      5 import org.apache.struts2.ServletActionContext;
      6 
      7 import java.io.*;
      8 import java.util.ArrayList;
      9 import java.util.List;
     10 import java.util.UUID;
     11 
     12 /**
     13  * Created by sherry on 000010/7/10 9:52.
     14  */
     15 public class FileUpAndDownload extends ActionSupport {
     16 
     17     private String title;
     18 
     19     /*上传文件*/
     20     private File[] upload;
     21     /*文件类型*/
     22     private String[] uploadContentType;
     23     /*文件名*/
     24     private String[] uploadFileName;
     25 
     26     /*保存路径*/
     27     private String savePath;
     28 
     29     //文件上传界面
     30     public String upLoadUI(){
     31         return SUCCESS;
     32     }
     33 
     34     //文件上传动作
     35     public String upLoadDo() throws IOException {
     36         /**/
     37         File outWrite = new File(getSavePath());
     38         if (!outWrite.exists()){
     39             outWrite.mkdir();
     40         }
     41         BufferedInputStream bufferedInputStream = null;
     42         BufferedOutputStream bufferedOutputStream = null;
     43         for (int i = 0;i < upload.length;i++){
     44             bufferedInputStream = new BufferedInputStream(new FileInputStream(upload[i]));
     45             bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(getSavePath()+File.separatorChar+UUID.randomUUID()+uploadFileName[i]));
     46             byte[] bytes = new byte[4096];
     47             int len = 0;
     48             while ((len = bufferedInputStream.read(bytes))>0){
     49                 bufferedOutputStream.write(bytes,0,len);
     50             }
     51             bufferedOutputStream.close();
     52             bufferedInputStream.close();
     53         }
     54         return SUCCESS;
     55     }
     56 
     57     //显示上传的文件
     58     public String showUploadFiles(){
     59 
     60         File rootFile = new File(getSavePath());
     61         File[] files = rootFile.listFiles();
     62         List<String> listFile = new ArrayList<>();
     63         for (int i = 0; i < files.length; i++) {
     64             listFile.add(files[i].getAbsolutePath());
     65         }
     66         ActionContext.getContext().put("listFile",listFile);
     67         return SUCCESS;
     68     }
     69 
     70     //删除所有上传文件
     71     public String deleteAllUploadFiles(){
     72         File rootFile = new File(getSavePath());
     73         File[] files = rootFile.listFiles();
     74         for (File file:files){
     75             file.delete();
     76         }
     77         return SUCCESS;
     78     }
     79 
     80 
     81 
     82     public String getTitle() {
     83         return title;
     84     }
     85 
     86     public void setTitle(String title) {
     87         this.title = title;
     88     }
     89 
     90     public File[] getUpload() {
     91         return upload;
     92     }
     93 
     94     public void setUpload(File[] upload) {
     95         this.upload = upload;
     96     }
     97 
     98     public String[] getUploadContentType() {
     99         return uploadContentType;
    100     }
    101 
    102     public void setUploadContentType(String[] uploadContentType) {
    103         this.uploadContentType = uploadContentType;
    104     }
    105 
    106     public String[] getUploadFileName() {
    107         return uploadFileName;
    108     }
    109 
    110     public void setUploadFileName(String[] uploadFileName) {
    111         this.uploadFileName = uploadFileName;
    112     }
    113 
    114     //返回文件保存路径
    115     public String getSavePath() {
    116         return ServletActionContext.getServletContext().getRealPath(savePath);
    117     }
    118 
    119     public void setSavePath(String savePath) {
    120         this.savePath = savePath;
    121     }
    122 }

    使用拦截器控制允许上传的文件类型

     1         <action name="upLoadDo" class="org.zln.updateAndDownload.action.FileUpAndDownload" method="upLoadDo">
     2             <interceptor-ref name="fileUpload">
     3                 <param name="allowedTypes">
     4                     text/plain,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/pdf
     5                 </param>
     6                 <param name="maximumSize">4000</param>
     7             </interceptor-ref>
     8             <interceptor-ref name="defaultStack"/>
     9             <param name="savePath">/upload</param>
    10             <result name="success">/WEB-INF/updateAndDownload/upLoadSucc.jsp</result>
    11             <result name="input">/WEB-INF/updateAndDownload/upLoadUI.jsp</result>
    12         </action>
  • 相关阅读:
    Hadoop-2.4.1学习之Map任务源代码分析(下)
    微软面试题之两个链表的第一个公共结点
    再次轻度破解EXE文件
    源泉书签,助您管理海量收藏。www.yuanquanshuqian.com,今日更新:多标签功能已实现
    经验总结17--submitbutton,ajax提交
    python学习笔记(六)文件夹遍历,异常处理
    vue 数据传递的方法
    Vue 组件之间的数据传递
    Springboot文件下载
    springboot获取URL请求参数的几种方法
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4638781.html
Copyright © 2020-2023  润新知