Java獲取網絡圖片上傳到OSS

OSS不支持通過一個網絡地址來上傳圖片,所以若想將網絡上的圖片上傳到OSS上需要走點彎路。

1:通過鏈接將圖片下載到本地的一個文件夾下面

2:用OSS上傳該文件夾下的文件

3:上傳完成後刪除本地的文件

具體代碼如下:

  //獲取當前項目的絕對路徑  
    public static String getTomcatPath(){  
     String nowpath;            
     String tempdir;  
     nowpath=System.getProperty("user.dir");  
     tempdir=nowpath.replace("bin", "");  //把bin 文件夾變到 webapps文件裏面   
     return tempdir;    
    } 
	/**
	 * 將圖片下載下來後,上傳到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所對應的圖片下載到本地 
     * @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();  
            }
        }  

    } 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章