1

我正在尝试列出容器,但到目前为止完全没有运气......我已经尝试过

$aBlobContainer = $blobRestProxy->listContainers();

for($i = 0;$i<= count($aBlobContainer); $i++)
{
 echo 'Blob Container name is: '.$aBlobContainer[$i]->Name."\n";
}

但我有错误

Cannot use object of type WindowsAzure\Blob\Models\ListContainersResult as array

整天都在努力解决它似乎无法取得任何进展......让我知道我是否在做一些愚蠢的事情,或者是否有更好的方法来确定容器是否已经存在?谢谢!

编辑:

变量 $aBlobContainer 的 var_dump 出现为

    对象(WindowsAzure\Blob\Models\ListContainersResult)#42 (5) {
      ["_containers":"WindowsAzure\Blob\Models\ListContainersResult":private]=>
      数组(2){
        [0]=>
        对象(WindowsAzure\Blob\Models\Container)#48 (4) {
          ["_name":"WindowsAzure\Blob\Models\Container":private]=>
          字符串(6)“abc123”
          ["_url":"WindowsAzure\Blob\Models\Container":private]=>
          字符串(48)“http://orig.blob.core.windows.net/abc123”
          ["_metadata":"WindowsAzure\Blob\Models\Container":private]=>
          数组(0){
          }
          ["_properties":"WindowsAzure\Blob\Models\Container":private]=>
          对象(WindowsAzure\Blob\Models\ContainerProperties)#47 (2) {
            ["_lastModified":"WindowsAzure\Blob\Models\ContainerProperties":private]=>
            对象(日期时间)#49 (3) {
              [“日期”]=>
              字符串(19)“2012-11-29 01:32:20”
              ["timezone_type"]=>
              整数(2)
              [“时区”]=>
              字符串(3)“格林威治标准时间”
            }
            ["_etag":"WindowsAzure\Blob\Models\ContainerProperties":private]=>
            字符串(19) ""0x8CF9BE88256926F""
          }
        }
        [1]=>
        对象(WindowsAzure\Blob\Models\Container)#46 (4) {
          ["_name":"WindowsAzure\Blob\Models\Container":private]=>
          字符串(8)“multi123”
          ["_url":"WindowsAzure\Blob\Models\Container":private]=>
          字符串(50)“http://orig.blob.core.windows.net/multi123”
          ["_metadata":"WindowsAzure\Blob\Models\Container":private]=>
          数组(0){
          }
          ["_properties":"WindowsAzure\Blob\Models\Container":private]=>
          对象(WindowsAzure\Blob\Models\ContainerProperties)#45 (2) {
            ["_lastModified":"WindowsAzure\Blob\Models\ContainerProperties":private]=>
            对象(日期时间)#53 (3) {
              [“日期”]=>
              字符串(19)“2012-11-29 03:13:16”
              ["timezone_type"]=>
              整数(2)
              [“时区”]=>
              字符串(3)“格林威治标准时间”
            }
            ["_etag":"WindowsAzure\Blob\Models\ContainerProperties":private]=>
            字符串(19) ""0x8CF9BF69C25759F""
          }
        }
      }
      ["_prefix":"WindowsAzure\Blob\Models\ListContainersResult":private]=>
      无效的
      ["_marker":"WindowsAzure\Blob\Models\ListContainersResult":private]=>
      无效的
      ["_nextMarker":"WindowsAzure\Blob\Models\ListContainersResult":private]=>
      无效的
      ["_maxResults":"WindowsAzure\Blob\Models\ListContainersResult":private]=>
      无效的
    }

4

3 回答 3

3

查看源代码

$blobContainers = $blobRestProxy->listContainers(); //returns ListContainersResult

为了获得容器列表,您必须随后调用:

$blobContainerArray = $blobContainers->getContainers(); //exposes the array of containers

然后您应该能够在foreachfor语句中使用该数组。此工作流程与从容器内返回 blob 列表的工作流程相匹配,如 README.md 文件中所示:

try {
    // List blobs.
    $blob_list = $blobRestProxy->listBlobs("mycontainer");
    $blobs = $blob_list->getBlobs();

    foreach($blobs as $blob)
    {
        echo $blob->getName().": ".$blob->getUrl()."<br />";
    }
} catch(ServiceException $e){
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}
于 2012-12-02T21:51:02.623 回答
0
$options = new ListContainersOptions();
$options->setPrefix("prefixxxx");
$blobContainers = $blobRestProxy->listContainers($options);
$blobContainerArray = $blobContainers->getContainers();

foreach ($blobContainerArray as $container) 
{
    Trace("Container: " . $container->getName());
}
于 2017-03-11T19:24:19.363 回答
-1

从错误消息中,看起来 $blobRestProxy->listContainers() 正在返回一个对象。试试下面的代码。

$aBlobContainer = $blobRestProxy->listContainers();

foreach($aBlobContainer as $row) {
    echo 'Blob Container name is: '.$row->Name."\n";
}

当访问 $aBlobContainer 作为数组(即 $aBlobContainer[$i])时,它可能会给出错误。

* 编辑 *

foreach($aBlobContainer as $key => $row) {
  echo $row->Name . "\n";
}
于 2012-11-29T05:48:13.617 回答