簡體   English   中英

Rackspace-php-opencloud過濾器-有效的ObjectList過濾器的文檔?

[英]Rackspace - php-opencloud filters - Documentation for valid ObjectList filters?

有誰知道/在哪里有關於有效ObjectList過濾器數組的文檔?

該項目在github上的條目上有一個很小的內容,將我引向了API文檔 ,但這也沒有一個完整的列表,並且在“過濾器”上進行的搜索僅涉及容器,而不是對象本身。

我有一個視頻列表,每個視頻都以四種不同的格式命名為同一個東西(沒有文件類型)。 使用php-opencloud API,我只想獲取其中一種視頻格式(以獲取唯一的文件名,而不是所有其他格式)。

我認為使用過濾器是可行的方法,但是我找不到任何可靠的文檔。

以前必須有人這樣做。 幫助菜鳥出來嗎?

此頁面上的大多數鏈接現在已失效。 這是php-opencloud文檔的當前鏈接,其中包括一個使用前綴過濾objectList結果的示例:

http://docs.php-opencloud.com/en/latest/services/object-store/objects.html#list-objects-in-a-container

我沒有找到有關此文檔的文檔,但是很顯然,當Rackspace Cloud Files文檔提到查詢字符串中的參數時,這些參數轉換為objectList方法調用中的參數,如下所示:

GET /v1/MossoCloudFS_0672d7fa-9f85-4a81-a3ab-adb66a880123/AppleType?limit=2&marker=grannysmith

等於

$container->objectList(array('limit'=>'2', 'marker'=>'grannysmith'));

不幸的是,底層API不支持對Swift / Cloud Files容器中的對象進行過濾(請參閱http://docs.rackspace.com/files/api/v1/cf-devguide/content/List_Objects-d1e1284.html )。 共享代碼的一部分支持$filter參數,但實際上這里的Cloud Files沒有任何作用。

我將查看是否可以更新文檔以反映這一點。

正如Glen所指出的那樣,該服務目前不支持在對象上應用過濾器。 您可能唯一感興趣的是提供一個前綴,該前綴使您可以根據文件名的啟動方式來優化返回的對象。 因此,如果您發送“ bobcatscuddling”作為前綴,則將獲得該記錄的所有相關視頻格式。

看來,您唯一的選擇是取回所有對象並遍歷集合:

use OpenCloud\Rackspace;

$connection = new Rackspace(RACKSPACE_US, array(
   'username' => 'foo', 
   'apiKey' => 'bar'
)); 
$service = $connection->objectStore('cloudFiles', 'DFW', 'publicURL');

$container = $service->container('CONTAINER_NAME');

$processedObjects = array();
$marker = '';

while ($marker !== null) {

    $objects = $container->objectList('marker' => $marker); 
    $total   = $objects->count();
    $count   = 0;

    while ($object = $objects->next()) {

        // Extract the filename
        $filename = pathinfo($object->name, PATHINFO_FILENAME);

        // Make sure you only deal with the filename once (i.e. to ignore different extensions)
        if (!in_array($processedObjects, $filename)) {

            // You can do your DB check here...

            // Stock the array
            $processedObjects[] = $filename;
        }

        $count++;
        $marker = ($count == $total) ? $object->name : null;
    }

}

您會注意到,您正在增加標記並為每10,000個對象提出一個新請求。 我尚未對此進行測試,但是它可能會引導您朝着正確的方向發展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM