blobstore.create_upload_url
メソッドで私が間違っているのか、バグがあるのか分かりません(同様の問題があると思われます)。私はいくつかのURLを持っている私のapp.yamlでHTTPS経由でBlobstore Python APIを使用すると、
は、プロパティsecure: always
だとform
要素のaction
属性はhttps://
で始まるが、とき、それはそれは非httpsにリダイレクトされますAPIからのリターンです。
google app engine issue trackerにバグファイルがありますが、Googleからの返信はありません。
誰もが良い仕事を知っていますか?私の現在の解決策は、応答を処理して元のURLに戻るが、httpsを超えて返すように別の.pyファイルを用意することです。私はaction属性を設定するために、これを使用
EDIT
:HTMLでの出力のようなものに見える
from google.appengine.api import blobstore
view['upload_url'] = blobstore.create_upload_url
## pass the view dict to template and in template
<form action="{{ upload_url }}" enctype="multipart/form-data" method="post">
</form>
:
action="https://appid.appspot.com/_ah/upload/AMmfu6bcA9Sfz5isqw6PNNB8xzRy2rUoLaMS2GFjfPEwCZ-vg9M_hQTOR87wYdnMo7ZIbQX9NiNjORFTiKaUoLMHRpXvPf6r8Y5963GD9Cbv_9gIKgtEmtdvt5VcvQxzvbegqG3V5xQT/ALBNUaYAAAAATPdfcxxACFrQnUiLXWx61ViMDZ7F0aLF/"
ファイルのアップロードを(私は見ることができますそれは管理コンソール - > BLOBビューアにあります)、APIがリダイレクトするとhttpをリダイレクトし、secure: always
をhttpリクエストの後ろにns a HTTP 405エラー。
これは、アップロードハンドラです:
class AddUpdateImageStore(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
if self.request.get('imagestore_key'):
image = dbImageStore.ImageStore.get(self.request.get('imagestore_key'))
else:
image = dbImageStore.ImageStore()
image.name = self.request.get('image_name')
upload_files = self.get_uploads('image_file')
if upload_files:
image.imageUrl = images.get_serving_url(str(upload_files[0].key()))
imageKey = db.put(image)
for language in Settings.languages:
description = self.request.get('image_description_' + language)
if description:
imageDescription = dbImageStore.ImageDescription.gql('WHERE imageEntry = :imageEntry AND lang = :lang', imageEntry = imageKey, lang = language).get()
if imageDescription is None:
imageDescription = dbImageStore.ImageDescription()
imageDescription.imageEntry = imageKey
imageDescription.lang = language
imageDescription.description = description
db.put(imageDescription)
self.redirect('/edit/imageStore/?status=1&message=Image added/updated')
は、あなたがサンプルコードを提供することはできますか? –
アップロード処理コードも確認する必要があります。 –
@nickはアップロードハンドラでコードを更新しました – fredrik