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