解讀
如何使用臨時(shí)授權(quán)的url訪問(wèn)云對(duì)象地址,又如何通過(guò)該URL下載自定義的文件名。
下面是兩個(gè)內(nèi)容點(diǎn):
1.直接獲取臨時(shí)url,這個(gè)跟官方的差不多,基本上照搬即可。
2.獲取臨時(shí)url,并且可以對(duì)下載文件重命名。
使用sdk版本
java SDK版本 3.5.0
1.使用臨時(shí)URL訪問(wèn)OSS,并獲取臨時(shí)URL
官方文檔
oss java sdk
舉例
直接使用臨時(shí)URL訪問(wèn),這里可以參看文檔中的java授權(quán)訪問(wèn)。寫(xiě)的很詳細(xì)了。
// objectName: 上傳路徑 (不能包含Bucket名稱)
public String getDownloadUrl(String objectName) {
// 設(shè)置簽名URL過(guò)期時(shí)間,單位為毫秒。
Date expiration = new Date(new Date().getTime() + 3600 * 1000);
// 填寫(xiě)B(tài)ucket名稱,例如examplebucket。
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration );
return url.toString();
}
2.使用臨時(shí)URL訪問(wèn)OSS,并對(duì)臨時(shí)URL下載的文件重命名
分析
1.在獲取臨時(shí)的url里邊有這么一行代碼
ossClient.generatePresignedUrl(bucketName, objectName, expiration );
進(jìn)入看看
發(fā)現(xiàn)里邊有三個(gè)接口都可以獲取URL,看到最后一個(gè)public URL generatePresignedUrl(GeneratePresignedUrlRequest request)是不是很熟悉,這里不就是可以創(chuàng)建一個(gè)urlRequest。
看看傳入的參數(shù)GeneratePresignedUrlRequest 是什么:
驚喜的發(fā)現(xiàn)這里邊這個(gè)ResponseHeaderOverrides對(duì)象可以覆蓋response headers.
進(jìn)入到這個(gè)類里邊,找到了這個(gè)setContentDisposition()方法,這個(gè)正是我需要的。
這下就明了。
我需要new 一個(gè) GeneratePresignedUrlRequest,并將覆蓋請(qǐng)求頭的屬性ResponseHeaderOverrides給set進(jìn)去。并調(diào)用ossClient的generatePresignedUrl(GeneratePresignedUrlRequest)返回url即可文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-701458.html
舉例
// objectName: 上傳路徑 (不能包含Bucket名稱)
// fileName :重命名的文件(eg: rename.txt)
protected String getDownloadUrl(String objectName, String fileName) {
// 設(shè)置簽名URL過(guò)期時(shí)間,單位為毫秒。
Date expiration = new Date(new Date().getTime() + 3600 * 1000);
// 填寫(xiě)B(tài)ucket名稱,例如examplebucket。
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName);
//設(shè)置過(guò)期時(shí)間
request.setExpiration(expiration );
//方法一: 直接覆蓋請(qǐng)求頭
ResponseHeaderOverrides Headers=new ResponseHeaderOverrides();
Headers.setContentDisposition(String.format("attachment;filename=%s", fileName));
request.setResponseHeaders(Headers);
//方法二: 設(shè)置setQueryParameter();其實(shí)方法一源碼也是這樣設(shè)置的
// 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();
}
注: 第二種方法相當(dāng)于里邊源碼寫(xiě)的,直接設(shè)置Parameters
本篇文檔到這里就結(jié)束了,有興趣的朋友可以一起交流一下。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701458.html
到了這里,關(guān)于阿里云OSS對(duì)象存儲(chǔ)使用臨時(shí)URL訪問(wèn),并對(duì)下載文件重命名的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!