首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts2 文件上傳完整實現與配置詳解

     編輯:Java 相關知識

依賴 JAR 包

  • struts2-core
  • commons-fileupload
  • commons-io
  • commons-logging
  • freemarker (可選)

1. web.xml 配置過濾器

<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>

2. struts.xml 配置

<package name="default" extends="struts-default">
    <action name="myupload" class="com.xmgc.sc.action.MyUpLoadAction">
        <result name="success">/upload.jsp</result>
    </action>
</package>

3. Action 類自動接收文件

public class MyUpLoadAction {
    private String title;           // 普通字段
    private File upload;            // 上傳文件(屬性名 = file 域 name)
    private String uploadContentType; // 文件 MIME 類型
    private String uploadFileName;    // 原始文件名
    // getter/setter 省略

    public String execute() throws IOException {
        String saveDir = ServletActionContext.getServletContext().getRealPath("/myupload");
        File dest = new File(saveDir, uploadFileName);
        FileUtils.copyFile(upload, dest); // commons-io 一行搞定
        return SUCCESS;
    }
}

命名約定(關鍵)

屬性約定示例
文件對象屬性名 = file 域 nameupload → <input name="upload">
ContentType屬性名 + ContentTypeuploadContentType
文件名屬性名 + FileNameuploadFileName

4. JSP 頁面

<form action="myupload.action" method="post" enctype="multipart/form-data">
    文件名:<input type="text" name="title"/><br/>
    上傳:<input type="file" name="upload"/><br/>
    <input type="submit" value="上傳"/>
</form>

進階配置

<constant name="struts.multipart.maxSize" value="10485760" /> <!-- 10MB -->
<constant name="struts.multipart.parser" value="jakarta" /> <!-- 解析器 -->

多文件上傳

private List<File> uploads;
private List<String> uploadsContentType;
private List<String> uploadsFileName;
// JSP: 多個 <input type="file" name="uploads"/> 或同名多個
// Action 循環處理 List
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved