赞
踩
亚马逊提供的S3服务入手还挺简单的,前一段时间搞得S3,今天同事告知上传到S3的图片URL失效,大概访问URL情况如下:
一通查找,以下链接跟我问题一样,不过其中提到的S3 settings文件找不到,也就不了了之,有知道的大神欢迎告知。
https://stackoverflow.com/questions/15853928/django-compressor-heroku-s3-request-has-expired
以下是我的解决办法:
- /**
- * @param @param tempFile 目标文件
- * @param @param remoteFileName 文件名
- * @param @return
- * @param @throws IOException 设定文件
- * @return String 返回类型
- * @throws
- * @Title: uploadToS3
- * @Description: 将文件上传至S3上并且返回url
- */
- public static String uploadToS3(File tempFile, String remoteFileName) throws IOException {
- try {
- //上传文件
- s3.putObject(new PutObjectRequest(bucketName, remoteFileName, tempFile).withCannedAcl(CannedAccessControlList.PublicRead));
- //设置过期时间 9700小时
- java.util.Date expiration = new java.util.Date();
- long expTimeMillis = expiration.getTime();
- expTimeMillis += 1000L * 60 * 60 * 24 * 7;
- expiration.setTime(expTimeMillis);
- //获取一个request
- GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(
- bucketName, remoteFileName).withExpiration(expiration);
- //生成公用的url
- URL url = s3.generatePresignedUrl(urlRequest);
- System.out.println("=========URL=================" + url + "============URL=============");
- return url.toString();
- } catch (AmazonServiceException ase) {
- ase.printStackTrace();
- } catch (AmazonClientException ace) {
- ace.printStackTrace();
- }
- return null;
- }
S3服务上传文件默认返回url过期时间为15分钟,通过设置过期时间,可以延迟到7天。
如果想url有效保存7天以上,请看下篇关于amazonaws中S3服务URL失效(Requests that are pre-signed by SigV4 algorithm are valid for at most )问题解决(下)
参考链接:
使用AWS SDK for Java生成预先签名的对象URL
转载请注明出处,谢谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。