fly*_*die 5 spring spring-boot
我试着用邮递员上传一首歌,但是我有一个错误,比如场歌超过了允许的最大大小1048576字节."
我已经尝试在application.properties文件中添加此配置,但它不起作用:
spring.servlet.multipart.max-file-size = 10MB spring.servlet.multipart.max-request-size = 10MB
我确切地说,这适用于大小<1048576字节的文件
这是我的控制器:
@PostMapping("/songs")
public ResponseEntity<?> insertSong( @RequestParam(value = "title") String title, @RequestParam(value = "song") MultipartFile file) throws IOException {
Song song= new Song(title);
songService.insertSong(song, file);
return ResponseEntity.ok("song inserted");
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务:
@Service
public class SongServiceImpl implements SongService {
@Autowired
SongRepository songRepository;
@Value("${dir.songs}")
private String songsFolderPath;
@Override
public void insertSong(Song song, MultipartFile file) throws IOException
{
if(!(file.isEmpty())){
song.setSongPath(file.getOriginalFilename());
songRepository.save(song);
if (!(file.isEmpty())){
song.setSongPath(file.getOriginalFilename());
file.transferTo(new
File(songsFolderPath+song.getSong_ID()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误消息: {"timestamp":"2018-10-10T13:27:07.090 + 0000","status":500,"error":"内部服务器错误","消息":"最大上传超出大小;嵌套异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException:场曲超过其最大允许大小1048576字节.","path":"/ music-服务/歌曲"}
我使用微服务,我的配置是在gitLab上,这是一个:
我用这样的邮递员插入i文件:
更新 SpringBoot 2.0.0.RELEASE
Web 应用程序中的多部分大小取决于两个单独的设置
1)应用设置:通过Spring Boot中的配置实现application.properties
//SpringBoot 2.1.2.RELEASE
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
Run Code Online (Sandbox Code Playgroud)
2)服务器设置:此设置在应用程序设置之上。而在 Spring Boot 中,这个服务器配置可以通过两种方式完成
2.1) 在嵌入式 tomcat 中,正如您在以下链接中找到的EMBEDDED_TOMCAT_MAX_SHALLOW_SIZE(部署.war文件时这还不够)(无需在 2.1.2.RELEASE 中执行此操作)
2.2) 在独立服务器中:在文件中{TOMCAT_HOME}/conf/server.xml查找部分 <Connector port=“8080"并添加属性maxSwallowSize=“-1"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxSwallowSize="-1"/>
Run Code Online (Sandbox Code Playgroud)
随着-1您在服务器上禁用大小控制,现在只有您的 spring 应用程序上的设置很重要
此外,因为您正在处理文件,我认为您应该设置MediaType最适合您的 API(在我的情况下,我有文件 + 附加 json 元素)
@PostMapping(value = "/path", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Run Code Online (Sandbox Code Playgroud)
并在调用 REST-API 时尊重标头
headers.setContentType(MediaType.MULTIPART_FORM_DATA_VALUE)
Run Code Online (Sandbox Code Playgroud)
对于spring-boot版本2.xx,请尝试使用包含http的以下代码.
spring.http.multipart.max-file-size=300MB
spring.http.multipart.max-request-size=300MB
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5358 次 |
| 最近记录: |