我正在开发一个带有前端前端和springboot 2.1.2后端的项目,并实现了一种上传图像的方法。但是,仅当图像<1MB时,它才有效,较大的图像会导致异常:
org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException: 字段图片超出其最大允许大小1048576字节
我已经仔细研究了以下问题: I am trying to set maxFileSize but it is not honored Spring upload file size limit
我尝试添加
spring.servlet.multipart.max-File-Size: 30MB spring.servlet.multipart.max-Request-Size: 30MB
而当那也不起作用时
spring.servlet.multipart.maxFileSize: 30MB spring.servlet.multipart.maxRequestSize: 30MB
对我的application.yml似乎都不起作用。
我也发现了这一点: https://www.baeldung.com/spring-maxuploadsizeexceeded
并尝试按照该站点第2点所述设置限制。
没有一个成功。有什么想法我做错了吗? 这是我的application.yml:
logging:
file: ./log/backend.log
level.: WARN
banner:
location: banner/banner.txt
server:
context-path: /
spring:
application:
name: Backend
jpa:
hibernate:
ddl-auto: validate
use-new-id-generator-mappings: true
profiles:
active: development
http:
multipart:
maxFileSize: 30MB
maxRequestSize: 30MB
security:
basic:
enabled: false
management:
info:
git:
mode: full
这是我的控制人:
@RestController
@RequestMapping(value = "/api/v1/image")
@Api(value = "Image")
public class ImageEndpoint {
@Autowired
private ImageMapper imageMapper;
@Autowired
private IImageService imageService;
@RequestMapping(method = RequestMethod.POST)
@PreAuthorize("hasRole('ADMIN')")
@ApiOperation(value = "Upload a new image", authorizations = {@Authorization(value = "apiKey")})
@ResponseStatus(HttpStatus.OK)
public @ResponseHeader Long post(@RequestParam ("image") MultipartFile input){
try {
return imageService.save(imageMapper.dtoToEntitiy(new ImageDto(input.getBytes())));
}catch (IOException io){
throw new ResponseStatusException(HttpStatus.BAD_REQUEST);
}
}
更新:
servlet:
multipart:
max-request-size: 30MB
max-file-size: 30MB
这使它起作用,我在刚添加它后才重新编译,因此更改没有通过,实际上我只需要重建即可使其起作用。
答案 0 :(得分:0)
您可以在属性文件中尝试以下配置吗?
multipart.max-file-size=30MB
multipart.max-request-size=30MB
如果是yml配置,请添加以下设置。
spring:
http:
multipart:
max-file-size: 30MB
max-request-size: 30MB
要上传无限长的文件,可以设置以下内容。
spring.http.multipart.max-file-size=-1
希望它对您有用。