阿里云OSS对象存储使用临时URL访问,并对下载文件重命名

解读

如何使用临时授权的url访问云对象地址,又如何通过该URL下载自定义的文件名。
下面是两个内容点:
1.直接获取临时url,这个跟官方的差不多,基本上照搬即可。
2.获取临时url,并且可以对下载文件重命名。

使用sdk版本

java SDK版本 3.5.0

1.使用临时URL访问OSS,并获取临时URL

官方文档

oss java sdk

举例

直接使用临时URL访问,这里可以参看文档中的java授权访问。写的很详细了。

    // objectName: 上传路径 (不能包含Bucket名称)
    public String getDownloadUrl(String objectName) {
  		// 设置签名URL过期时间,单位为毫秒。
        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
        //  填写Bucket名称,例如examplebucket。
        URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration );
        return url.toString();
    }

2.使用临时URL访问OSS,并对临时URL下载的文件重命名

分析

1.在获取临时的url里边有这么一行代码

ossClient.generatePresignedUrl(bucketName, objectName, expiration );

进入看看
在这里插入图片描述
发现里边有三个接口都可以获取URL,看到最后一个public URL generatePresignedUrl(GeneratePresignedUrlRequest request)是不是很熟悉,这里不就是可以创建一个urlRequest。
看看传入的参数GeneratePresignedUrlRequest 是什么:在这里插入图片描述
惊喜的发现这里边这个ResponseHeaderOverrides对象可以覆盖response headers.
进入到这个类里边,找到了这个setContentDisposition()方法,这个正是我需要的。
在这里插入图片描述
这下就明了。
我需要new 一个 GeneratePresignedUrlRequest,并将覆盖请求头的属性ResponseHeaderOverrides给set进去。并调用ossClient的generatePresignedUrl(GeneratePresignedUrlRequest)返回url即可在这里插入图片描述

举例

   // objectName: 上传路径 (不能包含Bucket名称)
   // fileName :重命名的文件(eg:  rename.txt)
    protected String getDownloadUrl(String objectName, String fileName) {
        // 设置签名URL过期时间,单位为毫秒。
        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
        //  填写Bucket名称,例如examplebucket。
        GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName);
        //设置过期时间
        request.setExpiration(expiration );
        //方法一: 直接覆盖请求头
        ResponseHeaderOverrides Headers=new ResponseHeaderOverrides();
        Headers.setContentDisposition(String.format("attachment;filename=%s", fileName));
        request.setResponseHeaders(Headers);
        //方法二: 设置setQueryParameter();其实方法一源码也是这样设置的
        // Map<String, String> queryParams = new HashMap<>(8);
        // queryParams.put("response-content-disposition", String.format("attachment;filename=%s", fileName));
        // request.setQueryParameter(queryParams);
        URL url = ossClient.generatePresignedUrl(request);
        return url.toString();
    }

注: 第二种方法相当于里边源码写的,直接设置Parameters
在这里插入图片描述
本篇文档到这里就结束了,有兴趣的朋友可以一起交流一下。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值