上一篇中,我们通过设置url有效期来尽可能的使url有效时间变长。
但是预签名的有效最长期限为不能超过7天,一旦设置的有效时长超过7天,就会报如下错误:
com.amazonaws.SdkClientException: Requests that are pre-signed by SigV4 algorithm are valid for at most 7 days. The expiration date set on the current request [20450617T031909Z] has exceeded this limit.
at com.amazonaws.auth.AWS4Signer.generateExpirationDate(AWS4Signer.java:594)
at com.amazonaws.auth.AWS4Signer.presignRequest(AWS4Signer.java:249)
at com.amazonaws.services.s3.AmazonS3Client.generatePresignedUrl(AmazonS3Client.java:2886)
at com.shoufubang.test.S31.uploadToS3(S31.java:62)
at com.shoufubang.test.S31.main(S31.java:162)
官方也声明,在AWS签名版本4中,有效期也最长为7天。
=========================真·解决办法·分割线===============================
那么我们如何获取一个长期有效的URL呢?
我的解决办法是:直接把上传成功返回的url进行截取。
例如:
这个是过期的url :
访问的结果如下:
上面的url通过"?"进行截取,只截取"?"前面的,如下:
成功了,耶!!
转载请注明出处,谢谢