首页 > 解决方案 > 上传后 Azure 存储 zip 文件损坏(使用适用于 Java 的 Azure 存储 Blob 客户端库)

问题描述

问题:从数据生成的 csv 文件的 zip 文件在上传到 Azure Blob 存储后似乎已损坏。

上传前的 zip 文件如下所示:

在此处输入图像描述

一切正常。上传后的同一个 zip 文件已损坏,如下所示: 在此处输入图像描述

在上传期间,我使用适用于 Java 的 Azure Storage Blob 客户端库(v. 12.7.0,但我也尝试过以前的版本)。这是我使用的代码(类似于SDK 自述文件中提供的示例):

public void uploadFileFromPath(String pathToFile, String blobName) {
     BlobClient blobClient = blobContainerClient.getBlobClient(blobName);
     blobClient.uploadFromFile(pathToFile);
}

我得到上传的文件:

在此处输入图像描述

当我直接从存储资源管理器下载文件时,文件已经损坏。我做错了什么?

标签: azurefile-uploadazure-blob-storageazure-sdk-for-java

解决方案


根据您的描述,我建议您使用以下方法上传您的 zip 文件

public void uploadFromFile(String filePath, ParallelTransferOptions parallelTransferOptions, BlobHttpHeaders headers, Map<String,String> metadata, AccessTier tier, BlobRequestConditions requestConditions, Duration timeout)

我们可以使用方法来设置内容类型

例如

BlobHttpHeaders headers = new BlobHttpHeaders()
     .setContentType("application/x-zip-compressed");
 Integer blockSize = 4* 1024 * 1024; // 4MB;
 ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions(blockSize, null, null);
blobClient.uploadFromFile(pathToFile,parallelTransferOptions,headers,null, AccessTier.HOT, null, null);

更多详细信息,请参阅文档


推荐阅读