Взять переменную byte [] вместо прямого локального пути к файлу? - PullRequest
1 голос
/ 16 июня 2011

Файлы Rackspace Cloud, метод PutStorageItem объявлен для использования локального пути к файлу. Могу ли я вместо этого использовать переменную?

API PutStorageItem (строка ContainerName, строка localFilePath);

Мой метод объявлен как

UploadItem(string username, string apiKey, string ContainerName, byte[] Item)
{
  UserCredentials userCredentials = new UserCredentials(new Uri("https://auth.api.rackspacecloud.com/v1.0"), username, apiKey, null, null);

  Connection connection = new com.mosso.cloudfiles.Connection(userCredentials);

  connection.PutStorageItem(ContainerName, Item); //<--- X here 
}

Как видите, PutStorageItem принимает локальный путь к строке, но Item объявляется как byte []. Могу ли я использовать переменную вместо локального пути?

1 Ответ

1 голос
/ 16 июня 2011

Если библиотека Cloudfiles не предоставляет альтернативных функций загрузки, у вас есть две основные опции:

  • Обновите код, чтобы получить имя файла, а не предварительную выборку данных.

Очевидно, что это применимо только в том случае, если вы загружаете файлы, а не храните общие данные из какой-либо другой системы.

  • Получите копию исходного кода библиотеки API Couldfiles, а затем добавьте перегрузку для получения данных.чем имя файла и перестроить библиотеку.

В прошлом я занимался номером 2, где мне нужно было установить определенные заголовки, а код библиотеки позволял добавлять только «мета» заголовки.Если идти по этому пути, домашнюю страницу можно найти здесь , а привязки .Net находятся на github здесь .

Существует последний вариант, который болеехак.

  • Сохраните byte[] временный файл на диске (при условии, что у вас есть доступ), а затем передайте имя файла в библиотеку Cloudfiles.

Очевидно, это последнееЭтот вариант несколько странный и имеет проблемы с дисковым пространством и очисткой с течением времени, особенно если вы загружаете большие объемы данных.

...