无法将图像数据上载到S3



我正试图在我的春季启动应用程序中将图像数据上传到S3

String key = "destination/9229e871-3431-473d-bgaf-7ae52f23c272/time/1221394409192443/type/imageoverview/label/Car.jpeg";
ObjectMetadata metaData = new ObjectMetadata();
metaData.setContentLength(result.getHeaders().getContentLength());
metaData.setContentType(result.getHeaders().getContentType().getType()+"/"+
result.getHeaders().getContentType().getSubtype());
s3Client.putObject("my-bucket", key, new ByteArrayInputStream(result.getBody()), metaData);

结果是来自另一个远程服务的响应,并且包含图像数据。

有了这个,我得到错误:

com.amazonaws.services.s3.model.AmazonS3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch...

我在这里查过了,钥匙似乎遵守了所有的规则。签名方法一定不是原因,因为我可以将文件上传到另一个bucket,并且我在这两种情况下都以相同的方式创建AmazonS3实例。

需要注意的一点是,s3中还没有文件夹结构。我假设当找不到时,S3会创建它。我的目标是根据图像id和时间戳动态创建文件夹(两者都作为密钥的一部分传递(

那么我在这里错过了什么?

工作正常。问题在于:

metaData.setContentLength(result.getHeaders().getContentLength());

必须是:

metaData.setContentLength(result.getBody().length);

最新更新