[Azure 存储服务]Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)

科技资讯 投稿 6200 0 评论

[Azure 存储服务]Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)

问题描述

问:java azure storage account to use uploadWithResponse

答:To use the uploadWithResponse method with the Azure Blob Storage client library for Java, follow these steps:

    Add the Azure Storage Blob dependency to your project's build file. For Maven, add the following to your pom.xml:

<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob</artifactId> <version>12.14.2</version> </dependency>

  1. Import the necessary classes:
import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
  1. Create a BlobServiceClient instance using your storage account connection string:
String connectionString = "your_connection_string";
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder(.connectionString(connectionString.buildClient(;
  1. Get a reference to the container and the blob you want to upload:
String containerName = "your_container_name";
String blobName = "your_blob_name";
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName;
BlobClient blobClient = containerClient.getBlobClient(blobName;
  1. Upload a file using the uploadWithResponse method:
import com.azure.storage.blob.models.BlobUploadFromFileOptions;
import java.nio.file.Path;
import java.nio.file.Paths;

Path filePath = Paths.get("path/to/your/file";
BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath;
blobClient.uploadWithResponse(options, null, null;

 

继续追问:BlobParallelUploadOptions with string content

  1. Convert the string content to an InputStream and set up BlobParallelUploadOptions:
String content = "your_string_content";
InputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8;
long blockSize = 100 * 1024L; // 100 KB
int maxConcurrency = 5;
ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions(blockSize, maxConcurrency;
BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream.setParallelTra

在继续问:如何使用 “To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch. how to use the setifnonematch” 

答:(前面4步的答案一样,第五步的内容为
  1. Set up BlobUploadOptions with setIfNoneMatch:

BlobUploadOptions options = new BlobUploadOptions( .setInputStream(inputStream .setLength((long content.length( .setHttpHeaders(new BlobHttpHeaders(.setContentType("text/plain" .setRequestConditions(new BlobRequestConditions(.setIfNoneMatch("*";

  1. Upload the string content using the uploadWithResponse method with BlobUploadOptions:
blobClient.uploadWithResponse(options, null, null;

This will upload the string content to the specified blob in the Azure Blob Storage container only if the blob does not already exist. If the blob exists, the upload will fail with a BlobStorageException due to the setIfNoneMatch("*" condition. Remember to replace the placeholders with your actual connection string, container name, blob name, and string content。

问题解答

根据ChatGPT提供的三部分信息,通过人力拼接和测试。得到了成功执行的uploadWithResponse代码:

uploadWithResponse示例代码

String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=***************"; String containerName = "******************"; String fileName = "******************"; BlobServiceClient blobServiceClient = new BlobServiceClientBuilder( .connectionString(storageConnectionString .buildClient(; BlobContainerClient containerClient = blobServiceClient.createBlobContainer(containerName; BlobClient blobClient = containerClient.getBlobClient(fileName;
//准备content并且初始化blob parallel upload options对象
String content = "Test to append new content into exists blob! by blogs lu bian liang zhan deng "; InputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8; BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream, content.getBytes(.length; options.setRequestConditions(new BlobRequestConditions(.setIfNoneMatch("*"; Response<BlockBlobItem> rsp = blobClient.uploadWithResponse(options, null, null; if(rsp.getStatusCode(==201 { System.out.println("append content successful........"; }

说明:

2) 把string转换为以UTF_8编码的input stream

4) 设置 Request Conditions,当不需要重写的时候,可以使用 setIfNoneMatch("*"。如果操作的文件存在,则会出现  Status code 409, BlobAlreadyExistss 提示。

 

运行效果展示图

 

参考资料

BlobRequestConditions Class:https://learn.microsoft.com/en-us/java/api/com.azure.storage.blob.models.blobrequestconditions?view=azure-java-stable#com-azure-storage-blob-models-blobrequestconditions-setifnonematch(java-lang-string

适用于 Java 的 Azure Blob 存储客户端库 : https://docs.azure.cn/zh-cn/storage/blobs/storage-quickstart-blobs-java?tabs=powershell%2Cmanaged-identity%2Croles-azure-portal%2Csign-in-azure-cli#upload-blobs-to-a-container

 

 

编程笔记 » [Azure 存储服务]Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)

赞同 (35) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽