阿里云图片存储(上)

首先按我自己理解的意思介绍下为什么要使用(oss);oss是阿里云推出的图片存储服务,既然有了这个服务,我们在项目开发过程中,

用到的图片上传,就可以直接放到阿里云的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);
   }
  }
 }
}

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