package com.ruoyi.web.controller.common;

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;

import javax.servlet.MultipartConfigElement;

@Configuration
public class MultipartConfig {
    
    /**
     * 配置 MultipartResolver
     * 设置为不使用临时文件，直接在内存中处理
     */
    @Bean
    public MultipartResolver multipartResolver() {
        StandardServletMultipartResolver multipartResolver = 
            new StandardServletMultipartResolver();
        multipartResolver.setResolveLazily(true); // 延迟解析
        return multipartResolver;
    }
    
    /**
     * 配置 Multipart 配置
     */
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        
        // 设置文件大小限制
        factory.setMaxFileSize(DataSize.ofMegabytes(10));
        factory.setMaxRequestSize(DataSize.ofMegabytes(50));
        
        // 关键配置：设置文件大小阈值，小于此值直接保存在内存
        factory.setFileSizeThreshold(DataSize.ofMegabytes(2)); // 2MB以下的文件直接内存处理
        
        // 设置临时文件目录（可选，不设置则使用系统默认）
        // factory.setLocation("自定义临时目录路径");
        
        return factory.createMultipartConfig();
    }
}