В S3 REST API я добавляю метаданные к существующему объекту при помощи команды PUT (Copy) и копирую ключ к тому же местоположению с 'x-amz-metadata-directive' = 'REPLACE'
То, что я хочу сделать, изменить имя файла загрузки путем установки:
Content-Disposition: attachment; filename=foo.bar;
Это устанавливает метаданные правильно, но когда я загружаю файл, это все еще использует ключевое имя вместо 'foo.bar'
Я использую программный инструмент Браузер S3 для просмотра метаданных, и это выглядит корректным (кроме 'Content-Disposition'
быть всем нижним регистром, как это, было S3, просят, чтобы я подписался),
Затем с помощью Браузера S3 я просто нажал, затем сохраните, ничего не изменяя, и теперь он работает???
Что я пропускаю каким образом, устанавливая метаданные 'Content-Disposition: attachment; filename=foo.bar;'
из моего веб-приложения не работает, но действительно работает от Браузера S3?
РЕШЕНО:
Доко на http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html
кажется неправильным, в нем говорится:
Обратите внимание, как заголовки «x-amz-» отсортированы, обрезаны пробелы, преобразованы в верхний регистр, а несколько заголовков с одним и тем же именем были объединены с использованием запятой для разделения значений.
Обратите внимание на то, что в StringToSign появляются только заголовки Content-Type и Content-MD5HTTPentity. Заголовки сущностей otherContent- * не отображаются. Однако Content-Disposition необходимо задавать специально и не включать как: x-amz -meta-Content-Disposition
Теперь он работает нормально.