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