-
Notifications
You must be signed in to change notification settings - Fork 317
Open
Description
我用 amazon-s3-v2 (rustfs 图床),想要达到 checksumValidationEnabled(false) 的效果,这样能上传文件成功,否则总是报错 invalid header: x-amz-content-sha256
@Configuration
public class S3Config {
@Bean
public S3Client s3Client(@Value("${oss.uri}") String uri,
@Value("${oss.access-key-id}") String accessKeyId,
@Value("${oss.secret-key}") String secretKey) {
log.info("开始自动配置 S3Client,来自yml配置");
return S3Client.builder()
.endpointOverride(URI.create(uri))
.region(Region.US_EAST_1)
.credentialsProvider(StaticCredentialsProvider.create(
AwsBasicCredentials.create(accessKeyId, secretKey)
))
.forcePathStyle(true)
.serviceConfiguration(builder -> builder
.checksumValidationEnabled(false) // 关键:禁用 checksum 校验
)
.build();
}
}使用 x-file-storage 写的接口很简洁,
@Operation(summary = "文件上传(配置类)")
@PostMapping("/upload4")
@ResponseBody
public R uploadFileCustomConfig(@RequestPart("file") MultipartFile file,
@RequestParam(value = "key", required = false) String customKey) {
FileInfo fileInfo = fileStorageService.of(file).upload();
return R.ok().setData(fileInfo.getUrl());
}但存在问题,上述 S3Config 配置类未能覆盖 x-file-storage 默认配置 (checksumValidationEnabled(true))
pom.xml
...
<awssdk-s3.version>2.31.78</awssdk-s3.version>
<x-file-storage.version>2.3.0</x-file-storage.version>
...
<!-- 调用图床 rustfs -->
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>${awssdk-s3.version}</version>
</dependency>
<!--x-file-storage相关依赖-->
<dependency>
<groupId>org.dromara.x-file-storage</groupId>
<artifactId>x-file-storage-spring</artifactId>
<version>${x-file-storage.version}</version>
</dependency>
...Metadata
Metadata
Assignees
Labels
No labels