Как удалить файл из облачных файлов Rackspace с их API? - PullRequest
5 голосов
/ 05 мая 2010

Мне было интересно, как удалить файл из облачных файлов Rackspace с помощью их API?

Я использую php.

Деван

Ответы [ 5 ]

3 голосов
/ 05 мая 2010

Используйте delete_object метод CF_Container.

0 голосов
/ 15 октября 2013

Используйте метод с именем DeleteObject из класса CF_Container .

Методу DeleteObject объекта CF_Container требуется только один строковый аргумент имя_объекта . Эти аргументы должны быть именами файлов, которые будут удалены.

См. Пример кода C # ниже:

string username = "your-username";
string apiKey = "your-api-key";

CF_Client client = new CF_Client();
UserCredentials creds = new UserCredentials(username, apiKey);
Connection conn = new CF_Connection(creds, client);

conn.Authenticate();


var containerObj = new CF_Container(conn, client, container);

string file = "filename-to-delete";
containerObj.DeleteObject(file);

Примечание Не используйте DeleteObject из класса * CF_Client *

0 голосов
/ 11 января 2013

Я думал, что буду публиковать здесь, поскольку нет ответа, помеченного как правильный, хотя я бы принял ответ Мэтью Флэшена как правильный. Это будет весь код, необходимый для удаления вашего файла

<?php
    require '/path/to/php-cloudfiles/cloudfiles.php';

    $username = 'my_username';
    $api_key = 'my_api_key';
    $full_object_name = 'this/is/the/full/file/name/in/the/container.png';

    $auth = new CF_Authentication($username, $api_key);
    $auth->ssl_use_cabundle();
    $auth->authenticate();

    if ( $auth->authenticated() )
    {
        $this->connection = new CF_Connection($auth);

        // Get the container we want to use
        $container = $this->connection->get_container($name);
        $object = $container->delete_object($full_object_name);
        echo 'object deleted';
    }
    else
    {
        throw new AuthenticationException("Authentication failed") ;
    }

Обратите внимание , что «$ full_object_name» включает в себя «путь» к файлу в контейнере и имя файла без начального «/». Это связано с тем, что контейнеры используют псевдо-иерархические папки / каталоги, а в конечном итоге имя файла в контейнере - это путь + имя файла. для получения дополнительной информации см http://docs.rackspace.com/files/api/v1/cf-devguide/content/Pseudo-Hierarchical_Folders_Directories-d1e1580.html

0 голосов
/ 07 мая 2012

Убедитесь, что вы установили контейнер и определите любую папку sudo, которую вы используете.

$my_container = $this->conn->get_container($cf_container);
//delete file
$my_container->delete_object($cf_folder.$file_name);
0 голосов
/ 20 мая 2010

Вот мой код на C #. Просто угадать API похож на PHP.

    UserCredentials userCredientials = new UserCredentials("xxxxxx", "99999999999999");
    cloudConnection = new Connection(userCredientials);
    cloudConnection.DeleteStorageItem(ContainerName, fileName);
...