首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts 2 接收 input type="file" 陣列上傳

     編輯:程式設計綜合問答

Struts 2 檔案上傳陣列接收完整指南

在使用 Struts 2 框架處理多檔案上傳時,前端常使用 name="uploadFile[0].file" 這類陣列命名方式。後端 Action 需要正確對應接收。

前端表單範例

<form action="upload.action" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadFile[0].file" />
    <input type="file" name="uploadFile[1].file" />
    <input type="file" name="uploadFile[2].file" />
    <input type="submit" value="上傳" />
</form>

後端 Action 類別實作

public class UploadAction extends ActionSupport {
    // 對應 uploadFile[0].file, uploadFile[1].file ...
    private List<File> uploadFile;
    private List<String> uploadFileFileName;  // 原始檔名
    private List<String> uploadFileContentType; // MIME 類型

    // Getter/Setter 省略...

    @Override
    public String execute() {
        if (uploadFile != null) {
            for (int i = 0; i < uploadFile.size(); i++) {
                File file = uploadFile.get(i);
                String fileName = uploadFileFileName.get(i);
                String contentType = uploadFileContentType.get(i);
                
                // 處理檔案儲存邏輯
                saveFile(file, fileName);
            }
        }
        return SUCCESS;
    }
}

關鍵點說明

  • 屬性命名規則:Struts 2 會自動將 uploadFile[0].file 綁定到 List<File> uploadFile
  • 檔名屬性:慣例為 屬性名 + FileName(如 uploadFileFileName)
  • MIME 類型:慣例為 屬性名 + ContentType(如 uploadFileContentType)
  • List 介面:建議使用 List 而非陣列,靈活性較高

struts.xml 配置

<action name="upload" class="com.example.UploadAction">
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">10485760</param> <!-- 10MB -->
        <param name="allowedTypes">image/jpeg,image/png,application/pdf</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
    <result name="success">/upload_success.jsp</result>
    <result name="input">/upload.jsp</result>
</action>

常見問題排查

  1. 檔案為 null:檢查表單是否有 enctype="multipart/form-data"
  2. 中文檔名亂碼:確保 Tomcat 的 URIEncoding 設為 UTF-8
  3. 大檔案上傳失敗:調整 maximumSize 參數

掌握這些核心概念,即可輕鬆處理 Struts 2 的多檔案陣列上傳需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved