1. 程式人生 > 程式設計 >解決阿里雲OSS使用URL無法訪問圖片的兩種方法

解決阿里雲OSS使用URL無法訪問圖片的兩種方法

一、問題概述:

1、使用URL訪問OSS儲存的圖片時顯示XML程式碼
2、使用URL訪問OSS儲存的圖片時自動下載

二、解決方式:

如果大家對HTTP頭部內容不清晰的可以去百度瞭解一下再看

解決問題一:

問題一出現的原因:因為在OSS的Bucket許可權設定為私有
解決方式:將Bucket許可權設定為公共讀即可。但是我猜你之後多半會遇到第二個問題,那麼就來解決第二個問題。

解決問題二:

問題二出現的原因:沒有對HTTP頭進行設定,但是在阿里雲2020年新發布的通知中需要自定義域名,使用預設域名時為下載,設定了inline貌似也不管用。
可以參考文件:https://help.aliyun.com/knowledge_detail/39545.html#ZkKEz

解決方式:

解決方式有兩種。如果圖片內容較少或不再進行增加時可以直接在OSS控制檯進行設定。

解決方式一 如圖:

解決阿里雲OSS使用URL無法訪問圖片的兩種方法

解決阿里雲OSS使用URL無法訪問圖片的兩種方法

解決方式二:JavaSDK解決方式

使用SDK中的ObjectMetadata類進行HTTP頭設定。在上傳檔案時進行設定
具體程式碼:

將ContentDisposition設定為inline即可
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主賬號AccessKey擁有所有API的訪問許可權,風險很高。強烈建議您建立並使用RAM賬號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM賬號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

String content = "Hello OSS";

// 建立上傳檔案的元資訊,可以通過檔案元資訊設定HTTP header。
ObjectMetadata meta = new ObjectMetadata();

String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
// 開啟檔案內容MD5校驗。開啟後OSS會把您提供的MD5與檔案的MD5比較,不一致則丟擲異常。
meta.setContentMD5(md5);
// 指定上傳的內容型別。內容型別決定瀏覽器將以什麼形式、什麼編碼讀取檔案。如果沒有指定則根據檔案的副檔名生成,如果沒有副檔名則為預設值application/octet-stream。
meta.setContentType("text/plain");
// 設定內容被下載時的名稱。
meta.setContentDisposition("attachment; filename=\"DownloadFilename\"");
// 設定上傳檔案的長度。如超過此長度,則會被截斷,為設定的長度。如不足,則為上傳檔案的實際長度。
meta.setContentLength(content.length());
// 設定內容被下載時網頁的快取行為。
meta.setCacheControl("Download Action");
// 設定快取過期時間,格式是格林威治時間(GMT)。
meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
// 設定內容被下載時的編碼格式。
meta.setContentEncoding("utf-8");
// 設定header。
meta.setHeader("<yourHeader>","<yourHeaderValue>");
// 建立OSSClient例項。
OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);

// 上傳檔案。
ossClient.putObject("<yourBucketName>","<yourObjectName>",new ByteArrayInputStream(content.getBytes()),meta);

// 關閉OSSClient。
ossClient.shutdown();

參考阿里雲官方文件:https://help.aliyun.com/document_detail/84840.html

到此這篇關於解決阿里雲OSS使用URL無法訪問圖片的兩種方法的文章就介紹到這了,更多相關阿里雲OSS URL無法訪問內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!