<%@ page contentType="text/html;charset=UTF-8" language="java" %> 文件上传 - Struts2 学习

📁 文件上传

1. 单文件上传

// Action
public class UploadAction extends ActionSupport {
    
    // 文件对象
    private File upload;
    
    // 文件名 (格式: 属性名FileName)
    private String uploadFileName;
    
    // 文件类型 (格式: 属性名ContentType)
    private String uploadContentType;
    
    @Override
    public String execute() throws Exception {
        // 保存文件
        String path = ServletActionContext.getServletContext()
            .getRealPath("/upload");
        new File(path, uploadFileName).createNewFile();
        
        // 复制文件
        FileUtils.copyFile(upload, new File(path, uploadFileName));
        
        return SUCCESS;
    }
    
    // getter/setter
    public File getUpload() { return upload; }
    public void setUpload(File upload) { this.upload = upload; }
    public String getUploadFileName() { return uploadFileName; }
    public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; }
    public String getUploadContentType() { return uploadContentType; }
    public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; }
}

2. JSP 表单

<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="upload" method="post" enctype="multipart/form-data">
    <s:file name="upload" label="选择文件"/>
    <s:submit value="上传"/>
</s:form>

3. 多文件上传

// 使用 List 接收多文件
private List<File> uploads;
private List<String> uploadsFileName;

// 表单
<s:file name="uploads" multiple="multiple"/>

4. 限制文件大小和类型

// struts.xml 配置
<action name="upload" class="com.demo.UploadAction">
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">10485760</param><!-- 10MB -->
        <param name="allowedTypes">image/png,image/jpeg</param>
    </interceptor-ref>
    <result>/upload/success.jsp</result>
</action>
下一节:AJAX →