解決阿里云OSS使用URL無法訪問圖片的兩種方法
一、問題概述:
1、使用URL訪問OSS存儲的圖片時顯示XML代碼
2、使用URL訪問OSS存儲的圖片時自動下載
二、解決方式:
如果大家對HTTP頭部內容不清晰的可以去百度了解一下再看
解決問題一:
問題一出現(xiàn)的原因:因為在OSS的Bucket權限設置為私有
解決方式:將Bucket權限設置為公共讀即可。但是我猜你之后多半會遇到第二個問題,那么就來解決第二個問題。
解決問題二:
問題二出現(xiàn)的原因:沒有對HTTP頭進行設置,但是在阿里云2020年新發(fā)布的通知中需要自定義域名,使用默認域名時為下載,設置了inline貌似也不管用。
可以參考文檔:https://help.aliyun.com/knowledge_detail/39545.html#ZkKEz
解決方式:
解決方式有兩種。如果圖片內容較少或不再進行增加時可以直接在OSS控制臺進行設置。
解決方式一 如圖:


解決方式二:JavaSDK解決方式
使用SDK中的ObjectMetadata類進行HTTP頭設置。在上傳文件時進行設置
具體代碼:
將ContentDisposition設置為inline即可
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創(chuàng)建并使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創(chuàng)建RAM賬號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String content = "Hello OSS";
// 創(chuàng)建上傳文件的元信息,可以通過文件元信息設置HTTP header。
ObjectMetadata meta = new ObjectMetadata();
String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
// 開啟文件內容MD5校驗。開啟后OSS會把您提供的MD5與文件的MD5比較,不一致則拋出異常。
meta.setContentMD5(md5);
// 指定上傳的內容類型。內容類型決定瀏覽器將以什么形式、什么編碼讀取文件。如果沒有指定則根據(jù)文件的擴展名生成,如果沒有擴展名則為默認值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>");
// 創(chuàng)建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無法訪問內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java使用JFreeChart創(chuàng)建動態(tài)圖表的代碼示例
在數(shù)據(jù)可視化的世界中,圖表是展示數(shù)據(jù)的強大工具,無論是折線圖、柱狀圖還是餅圖,它們都能幫助我們更直觀地理解數(shù)據(jù),在Java生態(tài)中,JFreeChart是一個功能強大且靈活的圖表庫,廣泛應用于各種 Java 應用程序中,本文將帶你從零開始學習如何使用JFreeChart創(chuàng)建動態(tài)圖表2025-02-02
使用java swing實現(xiàn)qq登錄界面示例分享
這篇文章主要介紹了使用java swing實現(xiàn)qq登錄界面示例,需要的朋友可以參考下2014-04-04
spring Data jpa簡介_動力節(jié)點Java學院整理
這篇文章主要介紹了spring Data jpa簡介的相關資料,需要的朋友可以參考下2017-09-09
java連接池Druid連接回收DestroyConnectionThread&DestroyTask
這篇文章主要為大家介紹了java連接池Druid連接回收DestroyConnectionThread&DestroyTask示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
Jdk11使用HttpClient提交Http2請求的實現(xiàn)方法
這篇文章主要介紹了Jdk11使用HttpClient提交Http2請求的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
Spring Boot中Reactor模型的基本概念和最佳實踐
Reactor模型是一種基于事件驅動和非阻塞IO的編程模型,用于處理并發(fā)和異步操作,本文將介紹Spring Boot中使用Reactor模型的基本概念和最佳實踐,幫助讀者更好地理解如何利用這一強大的工具來構建現(xiàn)代化的Java應用程序,感興趣的朋友跟隨小編一起看看吧2024-05-05

