• struts2文件上传


    把struts2配置好了以后就可以作我们想做的事了,比如文件上传到服务器:

      1、首先需要在配置struts2时建的struts.xml文件中配置过滤器等相关信息(上一篇有配置方法)

     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 <struts>
     6     <constant name="struts.multipart.maxSize" value="4097152"></constant>
     7     <package name="yskf" extends="struts-default">
     8         <action name="logddd" class="com.maji.action.LoginAction">
     9             <result name="success">/Success.jsp</result><!-- 上传成功跳到成功页面 -->
    10             <result name="input">/Failed.jsp</result><!-- 上传失败跳到失败页面 input为上传失败时返回的结果-->
    11             <interceptor-ref name="fileUpload"><!-- 过滤器,name值固定-->
    12                 <param name="maximumSize">4097152</param><!-- 限定上传文件大小(字节) -->
    13                 <param name="allowedTypesSet">text/plain,image/jpeg</param><!-- 限定类型 -->
    14                 <param name="allowedExtensionsSet">.txt,.jpg</param><!-- 后缀名 -->
    15             </interceptor-ref>
    16             <interceptor-ref name="defaultStack"></interceptor-ref><!-- struts默认的拦截器栈,不可少 -->
    17         </action>
    18     </package>
    19 </struts>

      2、创建文件上传页面,用表单提交:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ taglib prefix="s" uri="/struts-tags" %><!-- 导入struts标签库,不需要用OGNL则不必 -->
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>文件上传</title>
     9 </head>
    10 <body>
    11     <!-- 提交到struts.xml的action,请求方式为post,enctype固定为 "multipart/form-data"-->
    12     <s:form action="logddd" method="post" enctype="multipart/form-data">
    13         <s:file name="BTG" /><!-- 用file  Type框,name属性必不可少 -->
    14         <s:submit value="login" />
    15     </s:form>
    16 </body>
    17 </html>

      3、创建一个action类,处理文件流:

     1 package com.maji.action;
     2 
     3 import java.io.File;
     4 import org.apache.commons.io.FileUtils;
     5 import com.opensymphony.xwork2.ActionSupport;
     6 /**
     7  * 该类继承ActionSupport,并重写execute方法
     8  * @author Administrator
     9  * 2017-09
    10  */
    11 public class LoginAction extends ActionSupport {
    12     private static final long serialVersionUID = 6015695024096389723L;//序列化
    13     private File BTG;                //文件对象,与文件上传界面的Type-file的name属性值保持一致
    14     private String BTGFileName;      //文件名(对象名+FileName)
    15     private String BTGContentType;   //文件类型(对象名+ContentType)
    16     
    17     @Override
    18     /**
    19      *重写execute方法
    20      */
    21     public String execute() throws Exception {
    22         String path ="D:\Desktop\mv\"+BTGFileName;    //文件上传到的目标目录+文件名
    23         FileUtils.copyFile(BTG, new File(path));         //把文件流复制到目标目录的目标文件中
    24         return SUCCESS;                                  //返回一个String,用于struts.xml接收并判断,常量SUCCESS的值为"success"
    25     }
    26     
    27     /*为对象名、文件名、文件类型添加Access方法,必不可少*/
    28     public File getBTG() {
    29         return BTG;
    30     }
    31 
    32     public void setBTG(File bTG) {
    33         BTG = bTG;
    34     }
    35 
    36     public String getBTGFileName() {
    37         return BTGFileName;
    38     }
    39 
    40     public void setBTGFileName(String bTGFileName) {
    41         BTGFileName = bTGFileName;
    42     }
    43 
    44     public String getBTGContentType() {
    45         return BTGContentType;
    46     }
    47 
    48     public void setBTGContentType(String bTGContentType) {
    49         BTGContentType = bTGContentType;
    50     }
    51 
    52 
    53 }

      4、为了方便观察,我们可以做一个成功界面和失败界面,文件名分别对应struts.xml中的<result name="success">、<result name="input">目标路径即可。

  • 相关阅读:
    [Oracle DBA学习笔记] STARTUP详解
    亦步亦趋完成在CentOS 6.4下安装Oracle 11gR2
    ‘程序员’与‘页面仔’
    Linux下建立Oracle服务及其开机自启动
    解析并验证IE6及之前版本的'!important’ BUG
    浅谈CSS选择器中的空格
    在CentOS安装CMake
    关于CentOS下RPM的一些实例
    CentOS配置ssh无密码登录的注意点
    CentOS下的账户管理
  • 原文地址:https://www.cnblogs.com/-maji/p/7518842.html
Copyright © 2020-2023  润新知