使用s3cmd将静态网站上传到Amazon S3时设置元数据

时间:2012-04-03 06:50:07

标签: web amazon-s3

我正在使用Pelican从markdown生成静态网页。然后,我使用s3cmd:

将输出上传到S3
s3cmd sync -rr --delete-removed output/ s3://mybucket/

不幸的是,css文件的元数据设置错误,我要将它们设置为“text / css”。有没有办法让s3cmd将它们(可能还有其他文件类型)设置为正确的值?或者如果没有,是否有替代s3cmd在Linux和MacOS X上运行?

1 个答案:

答案 0 :(得分:4)

您可以使用-m开关

上传到s3时设置文件的mime类型
s3cmd -m text/css ./file.css s3:/path/to/bucket

另外,我所做的是首先用gzip压缩它,然后上传到s3,但你也必须设置内容编码。请注意,Chrome和Safari有时不喜欢.gz扩展程序,因此我使用.jgz。

gzip file.css -9 -c > file.css.jgz
s3cmd -m text/css ./file.css s3:/path/to/bucket
s3cmd -m text/css --add-header "Content-Encoding:gzip" ./file.css.jgz s3:/path/to/bucket

另请注意,在链接到此css的html文件中,您应该检查浏览器是否可以处理gzip。这是php中的一个示例:

<?php
  $css = "$PATH_TO_S3_BUCKET/file.css";
  if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) 
      $css .= '.jgz'; 

  echo "<link rel='stylesheet' type='text/css' href='$css'/>";
?>