Со мной тоже случилось... Потребовалось несколько часов, чтобы найти, но в конце концов я понял это. Оказывается, если правильная подпись:
ссCNsAOxLf5vA80ldAI3M0CU2%2Bw=
Тогда AWS НЕ примет:
ссCNsAOxLf5vA80ldAI3M0CU2+w=
Где единственная разница заключается в переводе %2B в «+».
S3BotoStorage на самом деле дает это правильно, но кодирование происходит в CachedFilesMixin в последней строке метода URL (return unquote(final_url)
). Чтобы исправить это, я получил новый CachedFilesMixin для устранения «повреждения» (должен упомянуть, что я не знаю, почему эта кавычка вообще существует, поэтому ее отмена может вызвать другие проблемы)
class MyCachedFilesMixin(CachedFilesMixin):
def url(self, *a, **kw):
s = super(MyCachedFilesMixin, self).url(*a, **kw)
if isinstance(s, unicode):
s = s.encode('utf-8', 'ignore')
scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
path = urllib.quote(path, '/%')
qs = urllib.quote_plus(qs, ':&=')
return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))
Где я использовал код, который я нашел здесь.
Надеюсь это поможет...
person
idanzalz
schedule
04.09.2012