阿里雲圖片存儲

oss目的:

1.圖片和音視頻等應用的海量存儲

2.網頁或者移動應用的靜態和動態資源分離

 利用BGP帶寬,OSS可以實現超低延時的數據直接下載。也可以配合阿里雲CDN加速服務

3.雲端數據處理

比如圖片的裁剪,縮放,鑑黃等

oss使用:

1.http://www.aliyun.com/product/登錄阿里雲,開通oss圖片存儲(如果你還沒有賬號需要先註冊獲取Access Key ID和Access Key Secret)

2.新建bucket(注意命名空間,最好設置公共讀寫),我這邊是以(杭州節點爲例)

3.應用到項目中(http://docs.aliyun.com/#/pub/oss/sdk/java-sdk&preface)下載sdk(導入步驟省略)

4.參照demo寫的簡單的上傳和下載到oss的代碼

上傳圖片:

public void uploadFileToOss(String key, String filename){
  File file = new File(filename);
  ObjectMetadata objectMeta = new ObjectMetadata();
  objectMeta.setContentLength(file.length());
  objectMeta.setContentType("image/jpeg");
  InputStream input;
  try {
        input = new FileInputStream(file);
        OSSClient client = initParam.getOssClient();
        client.putObject(initParam.getBucketName(), key, input, objectMeta);
  } catch (FileNotFoundException e) {
   logger.error("找不到文件:"+filename);
   e.printStackTrace();
  }catch(OSSException oe){
   logger.error("OSSException");
   oe.printStackTrace();
  }catch(ClientException ce){
   logger.error("ClientException");
   ce.printStackTrace();
  }
}

 

下載:

public void downFileFromOss(String key, String filename,
   HttpServletRequest request,HttpServletResponse response){
   OutputStream outStream=null;
   try{
       outStream=response.getOutputStream();
       ServletUtils.setFileDownloadHeader(request, response, filename);
       OSSClient client = initParam.getOssClient();
       GetObjectRequest getObjectRequest = new GetObjectRequest(initParam.getBucketName(), key);
       OSSObject ossObject = client.getObject(getObjectRequest);
       byte[] buffer = new byte[1024];
       int bytesRead=0;
       outStream = response.getOutputStream();
       while ((bytesRead = ossObject.getObjectContent().read(buffer)) > -1) {
         outStream.write(buffer, 0, bytesRead);
       }
        outStream.flush();
      } catch (UnsupportedEncodingException e) {
       logger.error("下載文件失敗",e);
      } catch (IOException e) {
       logger.error("下載文件失敗",e);
      }finally{
       if(outStream != null){
      try {
         outStream.close();
      } catch (IOException e) {
         logger.error("關閉輸入流失敗",e);
      }
    }
  }
}

 

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