【问题标题】:Azure PHP SDK: download container's all blob in a single zip fileAzure PHP SDK:在单个 zip 文件中下载容器的所有 blob
【发布时间】:2018-03-01 14:43:56
【问题描述】:

我想将指定容器中的所有 blob 下载为 zip 文件。 有没有办法直接从 Azure 下载它的 zip 文件,不需要在我的服务器上处理它?

目前我认为如下:

file_put_contents("file_name", get_file_contents($blob_url));

我会将所有文件存储在我的服务器上,然后创建这些文件的 zip 文件,然后强制下载。 .

【问题讨论】:

    标签: php azure azure-storage azure-blob-storage


    【解决方案1】:

    Azure 没有这样的工具来为你生成一个 blob 包的 zip 文件。 Azure 存储只是……存储。您需要通过 php sdk(或直接通过 api,如果您愿意)下载每个 blob。

    如果您想要压缩内容,则需要先压缩内容,然后再存储到 blob 存储中。

    您的代码(在您的问题中)不会按原样工作,因为 get_file_contents() 期望与文件 I/O 一起工作,而这不是与 blob 交互的方式。相反,你会做这样的事情:

    $getBlobResult = $blobClient->getBlob("<containername>", "<blobname>");
    file_put_contents("<localfilename>", $getBlobResult->getContentStream());
    

    【讨论】:

    • 谢谢你的回答,顺便说一下我的逻辑和工作,代码如下$file_url = "https://mysite.blob.core.windows.net/container-name/" . $blob_name; file_put_contents($local_server_file_path, file_get_contents($file_url)); $zip-&gt;addFile( $local_server_file_path, $prop_doc['image_name'] );
    • 如何获取容器中文件夹内的 blob?例如:container_name/folder_name/blob
    • @Suraj - 我建议提出一个单独的问题,而不是在 cmets 中。但是......请注意,使用 Azure 存储 blob 时没有“文件夹”;由于/ 字符,它看起来就像那样。因此,您必须根据名称模式进行枚举。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2016-09-01
    • 2018-04-13
    • 2015-08-22
    • 1970-01-01
    • 2020-04-15
    • 2021-08-11
    相关资源
    最近更新 更多