兩步法解決你的問題。
(1)升級您的S3cmd安裝。版本1.0.x不具備設置字符集的功能。從master on github安裝。 Master包含此(1)bug和此(2)bug的修補程序,這些修補程序導致無法識別早期版本中內容類型的格式和「先前定義之前調用」問題。
從主OSX上安裝s3cmd請執行以下操作:
git clone https://github.com/s3tools/s3cmd.git
cd s3cmd/
sudo python setup.py install (sudo optional based on your setup)
確保您的Python庫是在您的路徑中加入以下到您的.profile或.bashrc或者.zshrc(再次,取決於你的系統)。
export PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH"
但如果您使用自制軟件可能會導致衝突 - 所以 - 只是符號鏈接到可執行文件。
ln -s /Library/Frameworks/Python.framework/Versions/2.7/bin/s3cmd /usr/local/bin/s3cmd
關閉終端並重新打開。
s3cmd --version
仍將輸出
s3cmd version 1.5.0-alpha3 - but its the patched version.
(2)升級後,使用:
s3cmd --acl-public --no-preserve --add-header="Content-Encoding:gzip" --add-header="Cache-Control:public, max-age=86400" --mime-type="text/html; charset=utf-8" put index.html s3://www.example.com/index.html
如果上傳成功,並設置在Content-Type爲「text/html的;字符集= utf-8「,但你看到這個過程中的錯誤:
WARNING: Module python-magic is not available...
我更喜歡沒有python-magic的生活 - 我發現如果你沒有專門設置mime類型,python-magic經常猜測錯誤。安裝python-magic,但一定要在s3cmd中設置mime-type =「application/javascript」,否則python-magic會猜測它是「application/x-gzip」,如果你在本地gzip你的js。
安裝python-魔法:
sudo pip install python-magic
PIP隨着近期OSX升級打破了,所以你可能需要更新PIP:
sudo easy_install -U pip
這將做到這一點。所有這一切都與S3cmd同步 - 不只是放在。我建議你將s3cmd同步放入一個thor類型的任務中,這樣你就不會忘記在任何特定的文件上設置mime類型(如果你對gzip文件使用python-magic)。
This is a gist of an example thor task for deploying a static Middleman site to s3.此任務允許您在本地重命名文件並使用s3cmd同步,而不是使用S3cmd put來逐個重命名它們。
來源
2013-04-25 16:08:50
DPF
感謝您的回答。 s3cmd --version顯示我正在使用1.5.0-alpha1。我嘗試使用--mime-type,正如你之前提出的那樣,但後來我得到了一個不同的錯誤:UnboundLocalError:在分配之前引用的本地變量'content_encoding' – cutemachine 2013-04-26 09:52:10
更改了答案以反映只有主人 - 而不是早期的軟件包解決這兩個問題。 – DPF 2013-04-26 19:17:59
添加了從git repo安裝s3cmd的指示 – DPF 2013-04-26 20:42:02