java獲取網(wǎng)絡(luò)圖片上傳到OSS的方法
OSS不支持通過(guò)一個(gè)網(wǎng)絡(luò)地址來(lái)上傳圖片,所以若想將網(wǎng)絡(luò)上的圖片上傳到OSS上需要走點(diǎn)彎路。
1、通過(guò)鏈接將圖片下載到本地的一個(gè)文件夾下面
2、用OSS上傳該文件夾下的文件
3、上傳完成后刪除本地的文件
具體代碼如下:
//獲取當(dāng)前項(xiàng)目的絕對(duì)路徑
public static String getTomcatPath(){
String nowpath;
String tempdir;
nowpath=System.getProperty("user.dir");
tempdir=nowpath.replace("bin", ""); //把bin 文件夾變到 webapps文件里面
return tempdir;
}
/**
* 將圖片下載下來(lái)后,上傳到OSS
* @param imgLink
* @param downloadPath
* @return
* @throws Exception
*/
private String downloadImagAndUploadToOss(String imgLink,String downloadPath) throws Exception{
List<String> urlList=new ArrayList<String>();
urlList.add(imgLink);
String imgName=DateUtil.formatDate(new Date(), "yyyyMMddhhmmss")+UuidUtil.createUUID()+".jpg";
downloadPicture(urlList,downloadPath,imgName);
String key="carAlbum/"+imgName;
String imgUrl=OSSObjectAPI.genOssPicUrl(OSSObjectAPI.XI_AN_BUCKET_NAME,OSSObjectAPI.XIAN_ACCESS_ID,OSSObjectAPI.XIAN_ACCESS_KEY,
"http://oss-cn-zhangjiakou.aliyuncs.com/",downloadPath+imgName,key);
FileUtil.delete(downloadPath+imgName);
return imgUrl;
}
/**
* 傳入要下載的圖片的url列表,將url所對(duì)應(yīng)的圖片下載到本地
* @param urlList
* @throws Exception
*/
private void downloadPicture(List<String> urlList,String path,String imgName) throws Exception {
if(urlList==null||urlList.size()==0){
return;
}
URL url = null;
FileOutputStream fileOutputStream =null;
InputStream inputStream =null;
for (String urlString : urlList) {
try {
url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0");
connection.setConnectTimeout(10 * 1000);
connection.setReadTimeout(15 * 1000);
inputStream = connection.getInputStream();
byte[] buffer = new byte[1024];
int length;
fileOutputStream= new FileOutputStream(path+ File.separator+ imgName);
while ((length = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
inputStream.close();
fileOutputStream.flush();
fileOutputStream.close();
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)整合文件上傳到FastDFS的方法詳細(xì)
- Java實(shí)現(xiàn)圖片上傳至FastDFS入門(mén)教程
- Java 客戶(hù)端操作 FastDFS 實(shí)現(xiàn)文件上傳下載替換刪除功能
- Java fastdfs客戶(hù)端實(shí)現(xiàn)上傳下載文件
- Java使用OSS實(shí)現(xiàn)上傳文件功能
- Java下載https文件并上傳阿里云oss服務(wù)器
- Java微信小程序oss圖片上傳的實(shí)現(xiàn)方法
- java實(shí)現(xiàn)上傳文件到oss(阿里云)功能示例
- Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能
相關(guān)文章
Maven打包跳過(guò)測(cè)試的實(shí)現(xiàn)方法
使用Maven打包的時(shí)候,可能會(huì)因?yàn)閱卧獪y(cè)試打包失敗,這時(shí)候就需要跳過(guò)單元測(cè)試。本文就介紹了Maven打包跳過(guò)測(cè)試的實(shí)現(xiàn)方法,感興趣的可以了解一下2021-06-06
springboot打包部署到linux服務(wù)器的方法
這篇文章主要介紹了springboot打包部署到linux服務(wù)器的方法,通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
詳解Java使用雙異步后如何保證數(shù)據(jù)一致性
這篇文章主要為大家詳細(xì)介紹了Java使用雙異步后如何保證數(shù)據(jù)一致性,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2024-01-01
java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)
這篇文章主要介紹了java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Java使用阻塞隊(duì)列BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者的方法
BlockingQueue是一個(gè)支持阻塞插入和移除操作的隊(duì)列,常用于多線(xiàn)程環(huán)境下的生產(chǎn)者和消費(fèi)者場(chǎng)景,文章介紹了阻塞隊(duì)列BlockingQueue的概念和其在生產(chǎn)者消費(fèi)者模式中的應(yīng)用,提供了一個(gè)簡(jiǎn)單的示例,展示了如何使用ArrayBlockingQueue來(lái)實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式2024-11-11
shardingJdbc3.x?版本的分頁(yè)bug問(wèn)題解析
這篇文章主要為大家介紹了shardingJdbc3.x?版本的分頁(yè)問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Spring事件監(jiān)聽(tīng)源碼解析流程分析
spring事件監(jiān)聽(tīng)機(jī)制離不開(kāi)容器IOC特性提供的支持,比如容器會(huì)自動(dòng)創(chuàng)建事件發(fā)布器,自動(dòng)識(shí)別用戶(hù)注冊(cè)的監(jiān)聽(tīng)器并進(jìn)行管理,在特定的事件發(fā)布后會(huì)找到對(duì)應(yīng)的事件監(jiān)聽(tīng)器并對(duì)其監(jiān)聽(tīng)方法進(jìn)行回調(diào),這篇文章主要介紹了Spring事件監(jiān)聽(tīng)源碼解析,需要的朋友可以參考下2023-08-08

