問題描述
查看Java Storage SDK,想找一個?uploadWithResponse? 的示例代碼,但是通過全網(wǎng)搜索,結(jié)果沒有任何有幫助的代碼。使用最近ChatGPT來尋求答案,得到非常有格式的內(nèi)容:
問:java azure storage account to use uploadWithResponse |
答:To use the
<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob</artifactId> <version>12.14.2</version> </dependency>
import com.azure.storage.blob.BlobClient; import com.azure.storage.blob.BlobContainerClient; import com.azure.storage.blob.BlobServiceClient; import com.azure.storage.blob.BlobServiceClientBuilder;
String connectionString = "your_connection_string"; BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient();
String containerName = "your_container_name"; String blobName = "your_blob_name"; BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName); BlobClient blobClient = containerClient.getBlobClient(blobName);
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); ?文章來源地址http://www.zghlxwxcb.cn/news/detail-436781.html This will upload the file to the specified blob in the Azure Blob Storage container. Remember to replace the placeholders with your actual connection string, container name, blob name, and file path. |
繼續(xù)追問:BlobParallelUploadOptions with string content |
答:(前面4步的答案一樣,第五步的內(nèi)容為)
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 |
在繼續(xù)問:如何使用 “To avoid overwriting, pass "*" to setIfNoneMatch(String ifNoneMatch). how to use the setifnonematch”? |
答:(前面4步的答案一樣,第五步的內(nèi)容為)
BlobUploadOptions options = new BlobUploadOptions() .setInputStream(inputStream) .setLength((long) content.length()) .setHttpHeaders(new BlobHttpHeaders().setContentType("text/plain")) .setRequestConditions(new BlobRequestConditions().setIfNoneMatch("*"));
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 |
?
問題解答
根據(jù)ChatGPT提供的三部分信息,通過人力拼接和測試。得到了成功執(zhí)行的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........"); }
說明:
1) content 中為需要寫入Blob的內(nèi)容
2) 把string轉(zhuǎn)換為以UTF_8編碼的input stream
3) 根據(jù) input stream來初始化 blob paralle upload options對象
4) 設(shè)置 Request Conditions,當不需要重寫的時候,可以使用 setIfNoneMatch("*")。如果操作的文件存在,則會出現(xiàn)??Status code 409,?BlobAlreadyExistss 提示。
5)?調(diào)用upload with response方法,獲取返回值,如果 返回值得status code為 201,表示Storage Account接受了這次 blob 內(nèi)容的改動。
?
運行效果展示圖
?
?
參考資料
BlobClient Class:https://learn.microsoft.com/en-us/java/api/com.azure.storage.blob.BlobClient?view=azure-java-stable
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文章來源:http://www.zghlxwxcb.cn/news/detail-436781.html
?
到了這里,關(guān)于【Azure 存儲服務(wù)】Java Storage SDK 調(diào)用 uploadWithResponse 代碼示例(詢問ChatGTP得代碼原型后人力驗證)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!