| package com.doumee.core.utils.azure; | 
|   | 
| import com.azure.core.http.rest.Response; | 
| import com.azure.storage.blob.BlobClient; | 
| import com.azure.storage.blob.BlobContainerClient; | 
| import com.azure.storage.blob.BlobServiceClient; | 
| import com.azure.storage.blob.BlobServiceClientBuilder; | 
| import com.azure.storage.blob.models.BlobRequestConditions; | 
| import com.azure.storage.blob.models.BlockBlobItem; | 
| import com.azure.storage.blob.options.BlobParallelUploadOptions; | 
| import lombok.Data; | 
| import lombok.extern.slf4j.Slf4j; | 
|   | 
| import java.io.InputStream; | 
|   | 
| @Data | 
| @Slf4j | 
| public class AzureBlobUtil { | 
|   | 
|     public    String connectionString; | 
|     public    BlobServiceClient blobServiceClient; | 
|     public     String accountName; | 
|     public   String accountKey; | 
|     public    String endpoint; | 
|     public   String container; | 
|   | 
|     public   BlobContainerClient blobContainerClient ; | 
|   | 
|     public AzureBlobUtil(String accountName, String accountKey, String endpoint, String container){ | 
|         try { | 
|             this.accountKey = accountKey; | 
|             this.accountName = accountName; | 
|             this.endpoint = endpoint; | 
|             this.container = container; | 
|             this.connectionString = "DefaultEndpointsProtocol=https;AccountName=" + this.accountName + ";AccountKey=" + this.accountKey + ";EndpointSuffix=" + endpoint; | 
|             this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient(); | 
|             this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container); | 
|         }catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|   | 
|     } | 
|   | 
|   | 
|     public   void initClient( )   { | 
|         try { | 
|             this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient(); | 
|             this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container); | 
|         }catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|     public   void uploadFile(String fileName, InputStream data)   { | 
|         try { | 
|             if(getBlobContainerClient() == null){ | 
|                 initClient(); | 
|             } | 
|             BlobClient client = this.blobContainerClient.getBlobClient(fileName); | 
|             client.upload(data, data.available(), true); | 
|         }catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|     public  boolean uploadFileWithResponse(String fileName, InputStream inputStream)   { | 
|         try { | 
|             if(getBlobContainerClient() == null){ | 
|                 initClient(); | 
|             } | 
|             BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream, inputStream.available()); | 
|             options.setRequestConditions(new BlobRequestConditions().setIfNoneMatch("*")); | 
|             Response<BlockBlobItem> rsp = this.blobContainerClient.getBlobClient(fileName).uploadWithResponse(options, null, null); | 
|             if(rsp.getStatusCode()==201)  { | 
|                 log.info("上传成功:........"+fileName); | 
|                 return true; | 
|             } | 
|         }catch (Exception e) { | 
|             e.printStackTrace(); | 
|             log.info("上传失败:........"+e.getMessage()); | 
|         } | 
|         return false; | 
|     } | 
|   | 
| } |