Spring Boot Minio预签名的url在浏览器中不工作

mbzjlibv  于 2023-03-18  发布在  Spring
关注(0)|答案(1)|浏览(545)

我正在使用代码生成minio预签名的网址,然后试图在浏览器中打开该网址,但当我在浏览器中打开该网址时,它给我以下错误:

<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<Key>PAEHXVONAHDVJ/A</Key>
<BucketName>test</BucketName>
<Resource>/test/PAEHXVONAHDVJ/A</Resource>
<RequestId>173708A8FD5721F0</RequestId>
<HostId>fcc0c2f9-167f-4502-981c-61a3fedb3487</HostId>
</Error>

下面是我用来创建预签名的网址的代码:

Map<String, String> reqParams = new HashMap<>();
        reqParams.put("response-content-type", "application/json");
        String minioUploadUrl = "";

        try {
            minioUploadUrl = minioPrimaryClient.getPresignedObjectUrl(
                    GetPresignedObjectUrlArgs.builder()
                            .method(Method.GET)
                            .bucket(org) //org is variable here 
                            .object(tId + "/" + task) //task is variable
                            .expiry(60 * 60)
                            .extraQueryParams(reqParams)
                            .build());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return minioUploadUrl;

基本上,我正在创建的网址将有两个文件夹内提到桶,我想钛上传多个文件内。
相同的网址,这是越来越生成时,我正在使用通过 Postman 它的工作很好,但在迷你服务器,它得到上传没有名称。

sshcrbum

sshcrbum1#

是否要生成一个预签名的url并使用它将多个文件上载到一个文件夹?您可能需要使用getPresignedPostForm API。例如:

PostPolicy policy = new PostPolicy("myBucket",ZonedDateTime.now().plusHours(1));
        policy.addContentLengthRangeCondition(0,100*1024*1024); // file size range
        policy.addStartsWithCondition("key","myDir/); //directory
        return minioClient.getPresignedPostFormData(policy);

然后你会得到一个formData,你可以使用这个formData上传任何文件到myBucket中的myDir/。例如:post formData
key是要将文件上载到的objectKey。file是要上载的文件。您可以多次使用此formData上载多个文件。

相关问题