Невозможно загрузить файл, содержащий «[» в имени, в IBM Cloud Object Storage - PullRequest
0 голосов
/ 25 мая 2018

Я попытался загрузить в IBM Cloud Object Storage (ICOS) следующий код, но некоторые файлы не удалось загрузить.Неудачные файлы содержат символ «[» или «]» в имени файла.

TransferUtility Utl = new TransferUtility(objClient);
TransferUtilityUploadDirectoryRequest request = new   TransferUtilityUploadDirectoryRequest
{
    BucketName = "Correct Backet name"
    Directory = "Correct directory name" ex. "C:\\testd1\\testd2"
    KeyPrefix = "Correct prefix"
    SearchOption = SearchOption.AllDirectories,
    SearchPattern = "*.*"
};

Utl.UploadDirectory(request);

Язык: .NET C #

API: AWSSDK.Core 3.3.22.5, AWSSDK.S3 3.3.18.2

Имя исключения : Amazon.S3.AmazonS3Exception
Сообщение : «Неверный аргумент»

Имя внутреннего исключения : Amazon.Runtime.Internal.HttpErrorResponseException
Сообщение : "Удаленный сервер возвратил ошибку: (400) Неверный запрос "

Файлы с обычным именем, например" test.txt ", могут быть загружены без проблем.
Это явление не происходит с AWS S3 или другим S3совместимая служба хранения.
(но я пробовал только одну из других S3-совместимых служб ...)

Не могли бы вы мне сказать, почему я не могу загрузить в ICOS и какие существуют решения?

С наилучшими пожеланиями.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Спасибо за ваш совет.

Я хотел бы сделать следующее:
- В именах исходных файлов для загрузки содержатся символы "[" и "]", но я не хочуизмените имя файла.
Тем не менее, имя загруженного файла назначения (= ключ объекта?) можно изменить.
- Я хотел бы загрузить файлы, используя метод «UploadDirectory».

Iискал способ загрузки с помощью метода «UploadDirectory» с указанием имени ключа объекта, который будет создан в корзине.Но я не нашел хорошего пути.

Я думаю, что, используя метод «UploadDirectory», я не могу указать имя ключа создаваемого объекта.(Поэтому я думаю, что кодирование не может быть выполнено.)

В ICOS невозможно ли загрузить файлы, содержащие "[" или "]" в имени файла, используя метод "UploadDirectory"?

0 голосов
/ 25 мая 2018

Это похоже на случай, когда AWS не строго соблюдает опубликованные ограничения.Согласно документам AWS S3 : «Избегайте следующих символов в имени ключа из-за значительной специальной обработки для согласованности во всех приложениях».

  • Обратная косая черта ("\")
  • Левая фигурная скобка ("{")
  • Непечатаемые символы ASCII (128–255 десятичных символов)
  • Каретка ("^")
  • Правая фигурная скобка ("}")
  • Символ процента ("%")
  • Серьезный акцент / обратный тик ("`")
  • Правая квадратная скобка ("] ")
  • Кавычки
  • Символ" больше чем "("> ")
  • Левая квадратная скобка ("[")
  • тильда ("~")
  • символ "меньше чем" ("<") </li>
  • символ "фунт" ("#")
  • Вертикальная черта / труба ("|")

Если закодирован URL ([object-key] -> %5Bobject-key%5D), все должно быть в порядке.Может помочь метод UrlEncode(string) из класса HttpUtility ( docs ).

...