1. 程式人生 > >阿里雲OSS進行圖片上傳

阿里雲OSS進行圖片上傳

   private static String FOLDER="upload/";
   
   
   /**
    * 獲取阿里雲OSS客戶端物件
    * @return
    */
   public static OSSClient getOSSClient(){
    return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
    }
  
   /**
    * 建立儲存空間
    * @param ossClient  OSS連線
    * @param bucketName  儲存空間
    * @return
    */
   public static String createBucketName(OSSClient ossClient,String bucketName){
    final String bucketNames=bucketName;
    if(!ossClient.doesBucketExist(bucketName)){
     //建立儲存空間
     Bucket bucket=ossClient.createBucket(bucketName);
     return bucket.getName();
    }
   return bucketNames;
   }
  
   /**
    *
    * @param ossClient
    * @param bucketName
    */
   public static void deleteBucket(OSSClient ossClient,String bucketName){
    ossClient.deleteBucket(bucketName);
   }
  
   /**
    * 建立模擬資料夾
    * @param ossClient
    * @param bucketName
    * @param folder
    * @return
    */
   public static String createFolder(OSSClient ossClient,String bucketName,String folder){
  //資料夾名   
   final String keySuffixWithSlash=folder;
  
 //判斷資料夾是否存在,不存在則建立  
   if(!ossClient.doesObjectExist(bucketName,keySuffixWithSlash)){
    //建立資料夾  
            ossClient.putObject(bucketName,keySuffixWithSlash,new ByteArrayInputStream(new byte[0]));
             //得到資料夾名  
           OSSObject object = ossClient.getObject(bucketName,keySuffixWithSlash);
            String fileDir=object.getKey();
              return fileDir;
          }
         return keySuffixWithSlash;
   }
  
   /**
    * 根據key刪除OSS伺服器上的檔案
    * @param ossClient
    * @param bucketName
    * @param folder
    * @param key
    */
   public static void deleteFile(OSSClient ossClient,String bucketName,String folder, String key){
    ossClient.deleteObject(bucketName,folder+key);
   }
  
   /**
    * 上傳圖片至OSS
    * @param ossClient
    * @param file
    * @param bucketName
    * @param folder
    * @return
    */
   public static String uploadObject2OSS(OSSClient ossClient,MultipartFile file,String bucketName,String folder){
    String resultStr=null;
    try {
  //InputStream is = new FileInputStream(file);
  String fileName=file.getOriginalFilename();
  Long fileSize = file.getSize();
  ObjectMetadata metadata= new ObjectMetadata();
  metadata.setContentLength(fileSize);
  metadata.setCacheControl("no-cache");
  metadata.setHeader("Pragma", "no-cache");
  metadata.setContentEncoding("utf-8");
  metadata.setContentType(getContentType(fileName));
  metadata.setContentDisposition("filename/filesize="+fileName+"/"+fileSize+"Byte.");
     //上傳檔案
  PutObjectResult putResult= ossClient.putObject(bucketName, folder+fileName, file.getInputStream(),metadata);
  resultStr=putResult.getETag();
    } catch (IOException e) {
  e.printStackTrace();
 }
    return resultStr;
   
   }
  
   public static String getContentType(String fileName){
    String fileExtension=fileName.substring(fileName.lastIndexOf("."));
    if(".bmp".equalsIgnoreCase(fileExtension)){
     return "image/bmp";
    }
    if(".gif".equalsIgnoreCase(fileExtension)){
     return "image/gif";
    }
    if(".jpeg".equalsIgnoreCase(fileExtension)||".jpg".equalsIgnoreCase(fileExtension)||".png".equalsIgnoreCase(fileExtension)){
     return "image/jpeg";
    }
 return fileName;
   }
  
   //呼叫該方法進行上傳
   public static String  uploadImg(MultipartFile headPic,String folder) {
    OSSClient ossClient=getOSSClient();
    String md5key=uploadObject2OSS(ossClient, headPic, BACKET_NAME, folder);
 return md5key;
   }