Skip to content

invalid header: x-amz-content-sha256 > 请问如何关闭 checksum 校验? #338

@miozus

Description

@miozus

我用 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions