2010-12-01 5 views
2

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') 
+0

は、あなたがサンプルコードを提供することはできますか? –

+0

アップロード処理コードも確認する必要があります。 –

+0

@nickはアップロードハンドラでコードを更新しました – fredrik

答えて

2

この問題は、SDK 1.4.2で修正されました。私はちょうどそれをテストし、今は正常に動作しています。ここトラッカーで

参照問題: http://code.google.com/p/googleappengine/issues/detail?id=3463

+0

ああありがとう。それを逃した。 – fredrik

+0

問題ありません。 SDK 1.4.2は、2011年2月10日に最近リリースされました。 –

関連する問題