django-s3uploadを使用してファイルを s3 バケットにアップロードしています。正常に動作していますが、何らかの理由で、アップロードされたすべてのファイルの名前が .bin 拡張子を持つランダムな 16 進文字列に変更されます。コードのどこでこれが起こっているかを見ることができます:
def get_upload_params(request):
def make_policy():
policy_object = {
"expiration": (datetime.now() + timedelta(hours=24)).strftime('%Y-%m-%dT%H:%M:%S.000Z'),
"conditions": [
{ "bucket": settings.AWS_S3_BUCKET_NAME },
{ "acl": "public-read" },
["starts-with", "$key", "uploads/"],
{ "success_action_status": "201" }
]
}
return b64encode(dumps(policy_object).replace('\n', '').replace('\r', ''))
def sign_policy(policy):
return b64encode(hmac.new(settings.AWS_SECRET_ACCESS_KEY, policy, sha).digest())
policy = make_policy()
return HttpResponse(dumps({
"policy": policy,
"signature": sign_policy(policy),
"key": "uploads/" + uuid4().hex + ".bin",
"success_action_redirect": "/"
}), content_type="application/json")
ファイル名をそのままにしておく方法がわかりません。すべてのアップロード作業をクライアント側で行う jQuery ファイルはこちらです。