Подтвердить что ты не робот

Amazon S3 неправильно работает с файлами

Я сделал этот сайт для своего друга, и я загрузил его в ведро Amazon S3 (http://ballard26.s3.amazonaws.com/index.html), и когда я перехожу на этот сайт страница не загружается правильно, и я понятия не имею, почему. Любые идеи?

Например, stylesheet.css загружается неправильно. Если вы перейдете к http://ballard26.s3.amazonaws.com/stylesheet.css, он загрузит файл вместо загрузки его как CSS.

4b9b3361

Ответ 1

Проверьте типы mime (заголовок типа содержимого HTTP) в файлах, которые вы загрузили. S3 не всегда правильно устанавливает их. Возможно, вам придется установить их в вызове API загрузки. Некоторые библиотеки загрузки сделают это для вас.

Если типы mime неверны, когда файл загружен из браузера с S3, если тип mime установлен неправильно, он не всегда будет отображаться правильно.

Ответ 2

Файлы CSS по умолчанию имеют тип MIME octet/binary. Чтобы исправить это, войдите в свою консоль управления AWS, перейдите в раздел Amazon S3 и найдите соответствующий ковш. Найдите файл CSS и выберите "Свойства". В разделе "Метаданные" установите для параметра Content-Type значение: text/css

Если вы используете приложение Panics Transmit для Mac OS X, вы можете установить пользовательский заголовок загрузки для файлов CSS Content-Type: text/css, который будет применять правильный тип MIME каждый раз, когда вы загружаете файл, устраняя необходимость вручную установить это в вашей консоли каждый раз.

Больше информации об этом в Adam Wilcoxs сообщение в блоге.

Ответ 3

Я бы предположил, что при загрузке файла вы не указали или не установили mime-тип файла. В результате он не выполняет binary/octet-stream.

Когда вы загружаете свою страницу, ваш браузер предполагает, что указанная вами таблица стилей не является файлом CSS, поскольку она обслуживается с типом контента, отличным от text/css, и поэтому не применяет таблицу стилей.

Ответ 4

У меня была такая же проблема в IE из-за неправильного типа содержимого наших файлов CSS/JS.

Если вы используете Ruby и драгоценный камень AWS, используйте код:

s3 = Aws::S3Interface.new($s3[:s3_access_key_id],$s3[:s3_secret_access_key],{:multi_thread => true});
s3.put($s3[:s3_bucket],s3_path,file[:tempfile].read,{'x-amz-acl' => 'public-read', 'content-type' => 'text/css' })

Обратите внимание на различный синтаксис для метаданных S3:

'content-type' => 'text/css'