Struts基础-如何上传文件

与通过Servet进行上传文件比较起来,Struts的上传文件就简单很多
  • 首先准备 upload.jsp

    上传一定要为form加上enctype="multipart/form-data",表示提交的数据是二进制的
    并且必须是method="post"

    使用struts的s:file标签标识上传文件框
    <s:file name="doc" label="upload" />
    这里name使用doc会和服务端的相应代码匹配
    <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8" isELIgnored="false"%>
      
    <%@page isELIgnored="false" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
      
    <html>
    <body>
     
    <form action="upload" method="post" enctype="multipart/form-data">
     
      上传文件 : <input type="file" name="doc" /> <br>
      <input type="submit" value="上传">
    </form>
     
    </body>
    </html>
  • UploadAction

    在upload.jsp中file字段对应的name是"doc"
    所以在action中,必须准备3个属性,分别是
    File doc;
    String docFileName;
    String docContentType;
    属性名字不能使用其他的,必须基于“doc"
    然后为这3个属性提供getter setter
    package com.how2java.action;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.UUID;
     
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
     
    public class UploadAction {
     
        File doc;
        String docFileName;
        String docContentType;
     
        public File getDoc() {
            return doc;
        }
     
        public void setDoc(File doc) {
            this.doc = doc;
        }
     
        public String getDocFileName() {
            return docFileName;
        }
     
        public void setDocFileName(String docFileName) {
            this.docFileName = docFileName;
        }
     
        public String getDocContentType() {
            return docContentType;
        }
     
        public void setDocContentType(String docContentType) {
            this.docContentType = docContentType;
        }
     
        public String upload() {
            System.out.println(doc);
            System.out.println(docFileName);
            System.out.println(docContentType);
            return "success";
        }
    }
  • struts.xml

    为upload路径配置UploadAction,并返回success.jsp
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
     
    <struts>
      <package name="basicstruts" extends="struts-default">
     
      <action name="showProduct" class="com.how2java.action.ProductAction" method="show">
        <result name="show">show.jsp</result>
      </action>   
      <action name="addProduct" class="com.how2java.action.ProductAction" method="add">
        <result name="input">addProduct.jsp</result>
        <result name="show">show.jsp</result>
      </action>   
      <action name="upload" class="com.how2java.action.UploadAction" method="upload">
        <result name="success">success.jsp</result>
      </action>   
     
    </package>
     
    </struts>
  • success.jsp

    分别显示doc,docFileName,docContentType
    <%@page isELIgnored="false"%>
    uploaded success
     
    ${doc}
    <br/>
    ${docFileName}
    <br/>
    ${docContentType}
    <br/>
  • 测试

    重启tomcat,访问页面,进行文件上传提交
    http://127.0.0.1:8080/struts/upload.jsp

    第一行表示上传后被放在tomcat的work目录下,并且以.tmp命名
    第二行是上传文件本来的名字
    第三行是上传文件的mime type



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值