Java AWS S3预签名URL文件上载-将文件名保留在bucket中

Java AWS S3预签名URL文件上载-将文件名保留在bucket中,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,我正在尝试使用下面的预签名PUT URL将文件上传到S3 bucket中 String tempFileKey = UUID.randomUUID().toString(); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(tempBucketName, tempFileKey)

我正在尝试使用下面的预签名PUT URL将文件上传到S3 bucket中

String tempFileKey = UUID.randomUUID().toString();
    GeneratePresignedUrlRequest generatePresignedUrlRequest =
                    new GeneratePresignedUrlRequest(tempBucketName, tempFileKey)
                            .withMethod(HttpMethod.PUT)
                            .withExpiration(expiration);
    URL fileUrl = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
上述方法的问题是,如果用户上传一个名为“xyz.jpg”的文件,我将无法在s3 bucket中保留文件名(或扩展名)。文件以tempFileKey作为名称保存。在创建预签名的url时,我不知道文件名或扩展名


我尝试按照中的建议使用${filename}作为tempFilekey,但它只是以${filename}(字面意思)的名称保存。

对象键是预签名url的组成部分,是生成url的算法所必需的:


因此,您不能更改密钥。

对象密钥是预签名url的组成部分,是生成url的算法所必需的:


因此,不能更改密钥。

当您创建并共享一个预签名的URL时,您可以指定对象的bucket和密钥(其他都不合理)。如果您想让客户机有机会提出一个密钥,那么让他们提前向您发送该密钥,对其进行验证,并将其包含在您的预签名计算中。当您创建并共享一个预签名URL时,您可以指定对象的bucket和密钥(其他任何操作都不合理)。如果您想让客户有机会提出一个密钥,那么让他们提前发送给您,验证它,并将它包括在您的预签名计算中。