codeigniter3:列出 azure blob 存储中的所有目录和文件?

codeigniter3 : Listing all directory and files from azure blob storage?

我有帐户名、帐户密钥和其他连接到 azure blob 存储所需的 azure blob 存储信息。我想列出 azure blob storage 中的所有目录和文件。我搜索并找到 links 但不了解如何从 CodeIgniter.

开始整合
I search this library https://github.com/Azure/azure-sdk-for-php#readme

有人可以提供我 link 或告诉我如何从一开始就集成到 codeigniter 中吗?

考虑阅读这个例子https://docs.microsoft.com/en-us/azure/storage/blobs/storage-upload-process-images?tabs=dotnet它提供了很多信息,应该可以帮助你,如果你有任何进一步的问题,我很乐意帮助你

这里有一个link关于codeigniter-azure的,大家可以看看

关于它还有一个

如果您想通过 cURL 列出容器或某个目录下的 blob,只需尝试以下代码:

<?php 

function generateSharedAccessSignature($accountName, 
    $storageKey, 
    $signedPermissions, 
    $signedService, 
    $signedResourceType, 
    $signedStart, 
    $signedExpiry, 
    $signedIP, 
    $signedProtocol, 
    $signedVersion){

    if(empty($accountName)){
        trigger_error("The account name is required.");
        return;
    }

    if(empty($storageKey)){
        trigger_error("The account key is required.");
        return;
    }

    if(empty($signedPermissions)){
        trigger_error("The permissions are required.");
        return;
    }

    if(empty($signedService)){
        trigger_error("The services are required.");
        return;
    }

    if(empty($signedResourceType)){
        trigger_error("The resource types are required.");
        return;
    }

    if(empty($signedExpiry)){
        trigger_error("The expiration time is required.");
        return;
    }

    if(empty($signedVersion)){
        trigger_error("The service version is required.");
        return;
    }
    // generate the string to sign
    $_toSign = urldecode($accountName) . "\n" . 
            urldecode($signedPermissions) . "\n" . 
            urldecode($signedService) . "\n" . 
            urldecode($signedResourceType) . "\n" . 
            urldecode($signedStart) . "\n" .
            urldecode($signedExpiry) . "\n" .
            urldecode($signedIP) . "\n" .
            urldecode($signedProtocol) . "\n" .
            urldecode($signedVersion) . "\n";

    // sign the string using hmac sha256 and get a base64 encoded version_compare
    $_signature = base64_encode(hash_hmac("sha256", utf8_encode($_toSign), base64_decode($storageKey), true));

    return $_signature;
}

$key= "";
$storageAccount = "";
$containerName = "";
$directoryName = ""; //leave it empty if list all blobs in container

$_signedPermissions = "rl";  //read and list permission
$_signedService = "b";       // for blob service
$_signedResourceType = "c";  //only for access container 
$_signedStart = "2021-05-31T00:00:00Z";  //sas token start time
$_signedExpiry = "2021-06-05T00:00:00Z"; //sas token expairy time
$_signedIP = NULL;     // no IP limit
$_signedProtocol = "https";
$_signedVersion = "2020-02-10";

$_signature = generateSharedAccessSignature($storageAccount, 
    $key, 
    $_signedPermissions, 
    $_signedService, 
    $_signedResourceType, 
    $_signedStart, 
    $_signedExpiry, 
    $_signedIP, 
    $_signedProtocol, 
    $_signedVersion);

$sig = urlencode($_signature);

$destinationURL = "https://$storageAccount.blob.core.windows.net/$containerName?restype=container&comp=list&prefix=$directoryName&sp=$_signedPermissions&srt=$_signedResourceType&ss=$_signedService&st=$_signedStart&se=$_signedExpiry&sv=$_signedVersion&spr=$_signedProtocol&sig=$sig";

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $destinationURL);

$content = curl_exec($ch);
echo $content;

?>

结果: