以编程方式下载 Azure 文件共享文档
Download Azure File Share Documents Programmatically
我在一个项目中,从 Azure 文件存储帐户下载文档 (.pdf) 的功能会很有用。这可能吗?我目前只能将目录和目录的文件内容路径输出为字符串,但无法使用 Microsoft.Azure 命名空间访问这些路径中的文件。
其他详细信息:在 C#/ASP.NET 中,部署为 Azure Web 应用程序
谢谢。
C
是的,有可能。
这里有一个演示供您参考:
我的文件共享和一张图片文件如下:
我的代码如下:
public static void DownloadFromFileStorage()
{
CloudStorageAccount account = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=leeliublob;AccountKey=OxxxxxxxxQSy2vkvSi/x/e9l9FhLqayXcbxxxxxJ5Wjkly1DsQPYY5dF2JrAVHtBozbJo29ZrrGJA==;EndpointSuffix=core.windows.net");
CloudFileClient client = account.CreateCloudFileClient();
//get File Share
CloudFileShare cloudFileShare = client.GetShareReference("myfile");
//get the related directory
CloudFileDirectory root = cloudFileShare.GetRootDirectoryReference();
CloudFileDirectory dir = root.GetDirectoryReference("Folder1");
//get the file reference
CloudFile file = dir.GetFileReference("1.PNG");
//download file to local disk
file.DownloadToFile("C:\Test\1.PNG", System.IO.FileMode.OpenOrCreate);
}
结果截图:
要回答 yanivtwin,下载到文件将是:
file.GetFileReference("1.PNG").DownloadToFile("文件夹路径",System.IO.FileMode.OpenOrCreate);
这不是 .NET 解决方案。我为任何使用 Windows 的人提供了这个解决方案,并且更喜欢一个非常简单的解决方案来从 blob 下载任何文件。
最简单的方法是使用 azcopy
command.
从 here 下载 azcopy
.exe
对于 windows - 启动 cmd 并通过转到下载的文件夹启动下载的 .exe。
cd <folder-with-azcopy.exe>
azopy.exe
然后转到您的存储帐户 -> 在设置下转到共享访问签名 -> 创建并获取 SAS 令牌。
运行 CMD 中的以下内容:SAS 令牌以 ?sig=...
开头,<local-directory-path>
是您要将所有内容下载到的文件夹 (C:/Users/.../download
)。
azcopy cp 'https://<storage-account-name>.file.core.windows.net/<file-share-name>/<directory-path><SAS-token>' '<local-directory-path>' --recursive=True
我在一个项目中,从 Azure 文件存储帐户下载文档 (.pdf) 的功能会很有用。这可能吗?我目前只能将目录和目录的文件内容路径输出为字符串,但无法使用 Microsoft.Azure 命名空间访问这些路径中的文件。
其他详细信息:在 C#/ASP.NET 中,部署为 Azure Web 应用程序
谢谢。
C
是的,有可能。
这里有一个演示供您参考:
我的文件共享和一张图片文件如下:
我的代码如下:
public static void DownloadFromFileStorage()
{
CloudStorageAccount account = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=leeliublob;AccountKey=OxxxxxxxxQSy2vkvSi/x/e9l9FhLqayXcbxxxxxJ5Wjkly1DsQPYY5dF2JrAVHtBozbJo29ZrrGJA==;EndpointSuffix=core.windows.net");
CloudFileClient client = account.CreateCloudFileClient();
//get File Share
CloudFileShare cloudFileShare = client.GetShareReference("myfile");
//get the related directory
CloudFileDirectory root = cloudFileShare.GetRootDirectoryReference();
CloudFileDirectory dir = root.GetDirectoryReference("Folder1");
//get the file reference
CloudFile file = dir.GetFileReference("1.PNG");
//download file to local disk
file.DownloadToFile("C:\Test\1.PNG", System.IO.FileMode.OpenOrCreate);
}
结果截图:
要回答 yanivtwin,下载到文件将是:
file.GetFileReference("1.PNG").DownloadToFile("文件夹路径",System.IO.FileMode.OpenOrCreate);
这不是 .NET 解决方案。我为任何使用 Windows 的人提供了这个解决方案,并且更喜欢一个非常简单的解决方案来从 blob 下载任何文件。
最简单的方法是使用 azcopy
command.
从 here 下载 azcopy
.exe
对于 windows - 启动 cmd 并通过转到下载的文件夹启动下载的 .exe。
cd <folder-with-azcopy.exe>
azopy.exe
然后转到您的存储帐户 -> 在设置下转到共享访问签名 -> 创建并获取 SAS 令牌。
运行 CMD 中的以下内容:SAS 令牌以 ?sig=...
开头,<local-directory-path>
是您要将所有内容下载到的文件夹 (C:/Users/.../download
)。
azcopy cp 'https://<storage-account-name>.file.core.windows.net/<file-share-name>/<directory-path><SAS-token>' '<local-directory-path>' --recursive=True