Облачные файлы Rackspace возвращают application/unknown как mime-type при загрузке с помощью Jclouds

По сути, у меня есть этот код, который загружает javascripts и другой контент в Rackspace с помощью Jclouds:

SwiftObject obj = cloudFilesClient.newSwiftObject();
obj.getInfo().setName(name);
obj.getInfo().setContentType(contentType);
obj.setPayload(payloadFile);
cloudFilesClient.putObject(container, obj);

Я заметил, что Chrome жалуется на то, что скрипты передаются с помощью text/plain, и решил разобраться. curl -I вместо этого сообщить: Content-Type: application/unknown.

Я много гуглил и пытался найти некоторые подсказки, и я пробовал:

  • вообще не устанавливая тип контента
  • установка пустой строки (где-то нашел слух об этом)
  • установка на application/javascript (правильно)
  • установка на text/javascript (неправильно, но часто)
  • obj.getAllHeaders().put("Content-Type", contentType);

Когда раньше мы использовали базовый HTTP для загрузки, это работало без каких-либо ручных настроек.


person Stoffe    schedule 03.12.2013    source источник


Ответы (1)


Наконец-то удалось разобраться, покопавшись в исходном коде - это работает:

FilePayload payload = new FilePayload(uploadableFile.localPath.toFile());
payload.getContentMetadata().setContentType(uploadableFile.contentType);
obj.setPayload(payload);

Если кто-то еще ищет это в будущем, публикуйте вопросы и ответы.

person Stoffe    schedule 03.12.2013
comment
у вас есть рабочая версия JClouds, которая исправляет это или пример того, как исправить мою версию. Спасибо. - person Josh; 09.05.2016
comment
@ Джош, этот пример в ответе был тем, что сработало для меня во время его написания. Чуть позже мы отказались от Rackspace по другим причинам, так что я больше не в курсе. Извини! - person Stoffe; 10.05.2016