阿里云图片存储

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);
      }
    }
  }
}

 

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