使用法语文件名从 Azure Blob 存储下载文件
Dowload files from Azure Blob Storage with French filename
我正在使用 Java SDK 连接到 Azure Blob 存储:
@Bean
@SneakyThrows
public CloudBlobContainer sourceContainer(CloudStorageAccount cloudStorageAccount) {
return cloudStorageAccount
.createCloudBlobClient()
.getContainerReference(sourceContainerName);
}
在下载过程中,我正在使用 listBobs 和必要的 CloudBlockBlob
。
它存在于 blob 列表中。然后我尝试下载它:
blob.downloadToFile(path);
blob.delete();
它失败并出现错误:
Method threw 'com.microsoft.azure.storage.StorageException' exception.
The specified blob does not exist.
有趣的是,当我重命名 blob 以删除法语重音字母时,它按预期工作。但我无法从服务器端解决它。我无法使用没有法语重音字母的文件名复制到 blob,因为 CloudBlockBlob
上的每个操作都失败并显示 404 HTTP 代码
我用 azure-storage
5.0.0 测试,它可以下载名称为 associé.txt
的文件。也许你可以用我的代码试试或者提供更多信息让我测试一下。
final String storageConnectionString ="connectionstring";
CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient serviceClient = account.createCloudBlobClient();
CloudBlobContainer container = serviceClient.getContainerReference("test");
container.createIfNotExists();
File file = new File("E:\Test");
for(ListBlobItem item : container.listBlobs()){
CloudBlockBlob cloudBlob = (CloudBlockBlob) item;
File f = new File(file.getAbsolutePath() + "\" +cloudBlob.getName() );
cloudBlob.downloadToFile(f.toString());
System.out.println(cloudBlob.getName()+" success download");
}
我正在使用 Java SDK 连接到 Azure Blob 存储:
@Bean
@SneakyThrows
public CloudBlobContainer sourceContainer(CloudStorageAccount cloudStorageAccount) {
return cloudStorageAccount
.createCloudBlobClient()
.getContainerReference(sourceContainerName);
}
在下载过程中,我正在使用 listBobs 和必要的 CloudBlockBlob
。
它存在于 blob 列表中。然后我尝试下载它:
blob.downloadToFile(path);
blob.delete();
它失败并出现错误:
Method threw 'com.microsoft.azure.storage.StorageException' exception.
The specified blob does not exist.
有趣的是,当我重命名 blob 以删除法语重音字母时,它按预期工作。但我无法从服务器端解决它。我无法使用没有法语重音字母的文件名复制到 blob,因为 CloudBlockBlob
上的每个操作都失败并显示 404 HTTP 代码
我用 azure-storage
5.0.0 测试,它可以下载名称为 associé.txt
的文件。也许你可以用我的代码试试或者提供更多信息让我测试一下。
final String storageConnectionString ="connectionstring";
CloudStorageAccount account = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient serviceClient = account.createCloudBlobClient();
CloudBlobContainer container = serviceClient.getContainerReference("test");
container.createIfNotExists();
File file = new File("E:\Test");
for(ListBlobItem item : container.listBlobs()){
CloudBlockBlob cloudBlob = (CloudBlockBlob) item;
File f = new File(file.getAbsolutePath() + "\" +cloudBlob.getName() );
cloudBlob.downloadToFile(f.toString());
System.out.println(cloudBlob.getName()+" success download");
}