赞
踩
背景:使用亚马逊S3上传文件,但是返回的文件URL连接有时效性,一旦超过时间就会返回错误Access Denied
修改文件有效性6天代码如下:
- public static String uploadFileForSafe(MultipartFile file){
- try{
- String fileName = file.getOriginalFilename();
- ObjectMetadata metadata = new ObjectMetadata();
- metadata.setExpirationTime(DateUtils.str2date("2050-01-01 00:00:00", DatePatternEnum.yyyyMMddHHmmss));
- PutObjectRequest objectRequest = new PutObjectRequest(safebucketName,fileName,file.getInputStream(),metadata);
- objectRequest.getRequestClientOptions().setReadLimit(51200000);//设置大小限制50M
- conn.putObject(objectRequest);
- // 修改对象的访问控制权限
- conn.setObjectAcl(safebucketName, fileName, CannedAccessControlList.PublicRead);
- // 生成对象下载链接(带签名)
- GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(safebucketName, fileName);
- request.setExpiration(DateUtils.getTodayDayAdd(6));//文件6天有效期
- String path = conn.generatePresignedUrl(request).toString();
- System.out.println("上传私密文件路径:"+path);
- return path;
- }catch (Exception e){
- System.out.println(file.getName()+"上传私密文件失败!!!");
- e.printStackTrace();
- }
-
-
- return null;
- }
问题解决:
最后发现只有开放存储桶的权限,公有读私有写,然后通过拼接固定的存储桶的url+文件名来使URL一直访问有效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。