SpringBoot上如何实现文件上传 FILE
转:SpringBoot上如何实现文件上传(config文件限制上传文件的大小)
2.利用Spring-boot实现文件上传功能,将多文件上传至服务器!
相比于单文件上传,这里就多了一个遍历的过程。
由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。
 
解决方案:统一使用 “Content-Type:application/json”格式,后台通过key来接受json串
9.使用RequestPart 来解决传参问题
当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收
import org.springframework.util.ObjectUtils;
ObjectUtils.isEmpty(file);
public static boolean isEmpty(Object[] array) {
    return array == null || array.length == 0;
}
11.File类的createNewFile()和mkdirs() mkdir()
createNewFile 创建文件的 前提路径需要存在
mkdir:只能用来创建文件夹,且只能创建一级目录,如果上级不存在,就会创建失败。
mkdirs:只能用来创建文件夹,且能创建多级目录 ,如果上级不存在,就会自动创建。(创建文件夹多用此)
createNewFile:只能用来创建文件,且只能在已存在的目录下创建文件,否则会创建失败。(FileOutputStream os=new FileOutputStream(file)也可创建文件,看情况使用)
12.使用File类的file.exists()方法检查文件的存在。
原因:配置文件版本问题
在application.properties中的配置为
SpringBoot-2.0:
spring.servlet.multipart.max-file-size=10Mb
spring.servlet.multipart.max-request-size=100Mb
SpringBoot-1.4:
spring.http.multipart.maxFileSize=10Mb
spring.http.multipart.maxRequestSize=100Mb
SpringBoot-1.4之前:
multipart.maxFileSize = 10Mb
multipart.maxRequestSize=100Mb
效果:springboot 2.x上 上传文件创建临时文件夹,并限制上传大小为1k

代码:
----yml location: tempDirLinux: /opt/location/tempDir tempDirWindows: D:\tempDir filePathLinux: /opt/location/filePath filePathWindows: D:\filePath ---- config package com.sinosoft.common.config; import org.springframework.beans.factory.annotation.Value; 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.util.unit.DataUnit; import javax.servlet.MultipartConfigElement; import java.io.File; /** * TODO * * @author zhaoJs * @version 1.0 * @date 2022/6/9 10:11 */ @Configuration public class MultipartConfig { @Value("${location.tempDirLinux}") private String tempDirLinux; @Value("${location.tempDirWindows}") private String tempDirWindows; @Bean MultipartConfigElement multipartConfigElement() { String tempDir = null; String osName = System.getProperties().getProperty("os.name"); if (osName.equalsIgnoreCase("Linux")) { tempDir = tempDirLinux; } else { tempDir = tempDirWindows; } MultipartConfigFactory factory = new MultipartConfigFactory(); File tmpDirFile = new File(tempDir); // 判断文件夹是否存在 if (!tmpDirFile.exists()) { tmpDirFile.mkdirs(); } factory.setLocation(tempDir); factory.setMaxFileSize(DataSize.of(10, DataUnit.MEGABYTES)); factory.setMaxRequestSize(DataSize.of(10, DataUnit.MEGABYTES)); return factory.createMultipartConfig(); } }
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号