Codeigniter3:列出Azure BLOB存储中的所有目录和文件? [英] codeigniter3 : Listing all directory and files from azure blob storage?

查看:18
本文介绍了Codeigniter3:列出Azure BLOB存储中的所有目录和文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Azure Blob存储的帐户名、帐户密钥和其他必要信息,以便连接到Azure Blob存储。我想列出azure blob storage中的所有目录和文件。我搜索并找到了链接,但不了解如何在CodeIgniter中从头开始集成。

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

有人能为我提供链接或告诉我如何从Start开始集成Codeigniter吗?

推荐答案

如果您想按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) . "
" . 
            urldecode($signedPermissions) . "
" . 
            urldecode($signedService) . "
" . 
            urldecode($signedResourceType) . "
" . 
            urldecode($signedStart) . "
" .
            urldecode($signedExpiry) . "
" .
            urldecode($signedIP) . "
" .
            urldecode($signedProtocol) . "
" .
            urldecode($signedVersion) . "
";

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

?>

结果:

这篇关于Codeigniter3:列出Azure BLOB存储中的所有目录和文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆