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