解決阿里云OSS使用URL無法訪問圖片的兩種方法
一、問題概述:
1、使用URL訪問OSS存儲的圖片時顯示XML代碼
2、使用URL訪問OSS存儲的圖片時自動下載
二、解決方式:
如果大家對HTTP頭部內(nèi)容不清晰的可以去百度了解一下再看
解決問題一:
問題一出現(xiàn)的原因:因為在OSS的Bucket權(quán)限設(shè)置為私有
解決方式:將Bucket權(quán)限設(shè)置為公共讀即可。但是我猜你之后多半會遇到第二個問題,那么就來解決第二個問題。
解決問題二:
問題二出現(xiàn)的原因:沒有對HTTP頭進行設(shè)置,但是在阿里云2020年新發(fā)布的通知中需要自定義域名,使用默認域名時為下載,設(shè)置了inline貌似也不管用。
可以參考文檔:https://help.aliyun.com/knowledge_detail/39545.html#ZkKEz
解決方式:
解決方式有兩種。如果圖片內(nèi)容較少或不再進行增加時可以直接在OSS控制臺進行設(shè)置。
解決方式一 如圖:
解決方式二:JavaSDK解決方式
使用SDK中的ObjectMetadata類進行HTTP頭設(shè)置。在上傳文件時進行設(shè)置
具體代碼:
將ContentDisposition設(shè)置為inline即可 // Endpoint以杭州為例,其它Region請按實際情況填寫。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云主賬號AccessKey擁有所有API的訪問權(quán)限,風險很高。強烈建議您創(chuàng)建并使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創(chuàng)建RAM賬號。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String content = "Hello OSS"; // 創(chuàng)建上傳文件的元信息,可以通過文件元信息設(shè)置HTTP header。 ObjectMetadata meta = new ObjectMetadata(); String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes())); // 開啟文件內(nèi)容MD5校驗。開啟后OSS會把您提供的MD5與文件的MD5比較,不一致則拋出異常。 meta.setContentMD5(md5); // 指定上傳的內(nèi)容類型。內(nèi)容類型決定瀏覽器將以什么形式、什么編碼讀取文件。如果沒有指定則根據(jù)文件的擴展名生成,如果沒有擴展名則為默認值application/octet-stream。 meta.setContentType("text/plain"); // 設(shè)置內(nèi)容被下載時的名稱。 meta.setContentDisposition("attachment; filename=\"DownloadFilename\""); // 設(shè)置上傳文件的長度。如超過此長度,則會被截斷,為設(shè)置的長度。如不足,則為上傳文件的實際長度。 meta.setContentLength(content.length()); // 設(shè)置內(nèi)容被下載時網(wǎng)頁的緩存行為。 meta.setCacheControl("Download Action"); // 設(shè)置緩存過期時間,格式是格林威治時間(GMT)。 meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z")); // 設(shè)置內(nèi)容被下載時的編碼格式。 meta.setContentEncoding("utf-8"); // 設(shè)置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); // 關(guān)閉OSSClient。 ossClient.shutdown();
參考阿里云官方文檔:https://help.aliyun.com/document_detail/84840.html
到此這篇關(guān)于解決阿里云OSS使用URL無法訪問圖片的兩種方法的文章就介紹到這了,更多相關(guān)阿里云OSS URL無法訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
永久解決 Intellij idea 報錯:Error :java 不支持發(fā)行版本5的問題
這篇文章主要介紹了永久解決 Intellij idea 報錯:Error :java 不支持發(fā)行版本5的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02方法參數(shù)屬性params,@PathVariable和@RequestParam用法及區(qū)別
這篇文章主要介紹了方法參數(shù)屬性params,@PathVariable和@RequestParam用法及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10Java實戰(zhàn)寵物店在線交易平臺的實現(xiàn)流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+maven+Mysql+FreeMarker實現(xiàn)一個寵物在線交易系統(tǒng),大家可以在過程中查缺補漏,提升水平2022-01-01java實現(xiàn)Spring在XML配置java類的方法
下面小編就為大家?guī)硪黄猨ava實現(xiàn)Spring在XML配置java類的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11