以编程方式下载 Azure 文件共享文档

Posted

技术标签:

【中文标题】以编程方式下载 Azure 文件共享文档【英文标题】:Download Azure File Share Documents Programmatically 【发布时间】:2018-11-09 08:33:12 【问题描述】:

我在一个项目中,从 Azure 文件存储帐户下载文档 (.pdf) 的功能会很有用。这可能吗?我目前只能将目录和目录的文件内容路径输出为字符串,但无法使用 Microsoft.Azure 命名空间访问这些路径中的文件。

其他详细信息:在 C#/ASP.NET 中,被部署为 Azure Web 应用程序

谢谢。

C

【问题讨论】:

是的,可以下载这些文件。您只是在寻找示例代码吗?如果是这种情况,请查看github.com/Azure/azure-storage-net/blob/master/Samples/…。 有更新吗???? 【参考方案1】:

是的,有可能。

这是一个演示供您参考:

我的文件共享和一个图片文件如下:

我的代码如下:

    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);

    

结果截图:

【讨论】:

要让这个工作我们需要预先设置名为“myfile”的文件共享吗? 我得到一个编译错误:'IListFileItem' 不包含对'DownloadToFile' 的定义,并且找不到接受'IListFileItem' 类型的第一个参数的扩展方法'DownloadToFile'(您是否缺少使用指令或程序集引用?)当我尝试下载到文件行时,有什么想法吗?【参考方案2】:

要回答 yanivtwin,下载到文件将是:

file.GetFileReference("1.PNG").DownloadToFile("FolderPath",System.IO.FileMode.OpenOrCreate);

【讨论】:

【参考方案3】:

这不是 .NET 解决方案。我为使用 Windows 的任何人提供了这个解决方案,并且希望有一个非常简单的解决方案来从 blob 下载任何文件。 最简单的方法是使用azcopy command. 从here 下载azcopy.exe 对于 Windows - 启动 cmd 并通过转到下载的文件夹来启动下载的 .exe。

cd <folder-with-azcopy.exe>
azopy.exe

然后转到您的存储帐户 -> 在设置下转到共享访问签名 -> 创建并获取 SAS 令牌。

在 CMD 中运行以下命令:SAS 令牌以 ?sig=... 开头,&lt;local-directory-path&gt; 是您希望将所有内容下载到的文件夹 (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

【讨论】:

OP 以编程方式询问 Microsoft 创建了一个完整的库,用于处理和使用所有 Azure 存储容器。此外,我们不能 100% 确定 OP 是否正在寻找 .Net 核心选项,这会使在 Linux 服务器上使用 .exe 变得困难。此外,以编程方式从外部可执行文件中获取进度可能很困难,这可能成为编程的噩梦。此外,如上所述,OP 要求将代码作为解决方案。 是的,凯文,我同意。我遇到了类似的问题,想要一种简单的方法将文件下载到我的 Windows 系统。我将其包括在内,以防它帮助其他面临类似问题的人并且他们偶然发现了这个问题。但是,是的,我同意。点很好。

以上是关于以编程方式下载 Azure 文件共享文档的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从共享 Dropbox 文件夹链接下载内容

WhatsApp 视频作为 Gif 以编程方式在 Android 上共享

如何以编程方式确定 PHP 中的文档根目录?

Azure 文件共享 SAS 令牌签名未按预期生成,如何为文件对象生成签名以匹配门户中生成的签名?

如何从 Azure 文件共享中获取文件元数据?

是否可以添加链接以下载只能通过在 Facebook 上共享才能下载的文件?