2011-10-24 14 views
1

JQueryファイルUPloadプラグイン(https://github.com/blueimp/jQuery-File-Upload/wikiを参照)を使用して、GAEベースのサイトに視覚的なドラッグアンドドロップアップロード機能を追加しようとしています。トピック(https://github.com/blueimp/jQuery-File-Upload/wiki/Google-App-Engine)に関するドキュメンテーションのページがありますが、それはプロセス全体を表示するには不足していますが、私はこれを取り組んでいても、それを動作させることはできません。jqueryファイルをGoogleアプリケーションエンジンにアップロードする

私の出発点は、画像のリストにリダイレクトするブロブストアへの単純な単一ファイルイメージのアップロードです: :今すぐイメージ・プラグインは、カスタマイズが必要な場合があり、クライアント側の2つの部分に分かれてい

class Pic(db.Model): 
    blob_key = blobstore.BlobReferenceProperty() 
    url = db.StringProperty(required=True) 
    creation = db.DateTimeProperty(auto_now_add=True) 

class PicUploadForm_Handler(webapp.RequestHandler): 
    def get(self): 
     upload_url = blobstore.create_upload_url('/upload_pic/') 
     self.response.out.write('<html><body>') 
     self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url) 
     self.response.out.write("""Upload File: <input type="file" name="file"><br> <input type="submit" 
     name="submit" value="Submit"> </form></body></html>""") 

class PicUpload_Handler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
     blob_info = upload_files[0] 
     pic = Pic(
      blob_key=blob_info.key(), 
      url=images.get_serving_url(blob_info.key())) 
     pic.put() 
     self.redirect('/pics/list/') 

class List_Pics(webapp.RequestHandler): 
    def get(self): 
     pics = Pic.all() 
     pics.order("-creation") 
     results = pics.fetch(5) 
     html_str = '<html><body>' 
     for pic in results: 
      html_str += '<div><a href="%s"><img src="%s"/></a></div>'%(pic.url, pic.url+'=s100') 
     html_str += '</body></html>' 
     self.response.out.write(html_str) 

この1:

<script> 
$('#fileupload').fileupload({ 
    add: function (e, data) { 
     var that = this; 
     $.getJSON('{{upload_url_1}}', function (url) { 
      data.url = url; 
      $.blueimpUI.fileupload.prototype 
       .options.add.call(that, e, data); 
     }); 
    } 
}); 
</script> 

とアップロードフォーム:

<form action="{{upload_url_2}}" method="POST" enctype="multipart/form-data"> 
    <div class="fileupload-buttonbar"> 
     <label class="fileinput-button"> 
      <span>Add files...</span> 
... 

これと1日の争いの後、私はこれらのURLのそれぞれの役割が何であるか分かりません(最後のスニペットで{{upload_url_1}}{{upload_url_2}})。

私がアップロードを処理し、結果をJSONを返すハンドラにそれらのいずれかをフックしようとした、とアップロードURL(create_upload_url()を使用して)が、配線のこのタイプの任意の順列を割り当てハンドラに他の1をフックしています失敗しました。

GAEのpythonにjqueryイメージをアップロードした経験がある人は誰でも、説明や例を提供できますか?

答えて

1

upload_url_2は、create_upload_url()に対応する必要があります。

upload_url_1ファイルがアップロードされる前に、ファイルが選択されたときにコールバックとして呼び出されるようです。実際にここで何かを達成しようとしていないなら、それを省略することができます。 addコールバックなしで初期化しようとしましたか?$('#fileupload').fileupload();

+0

これは私が試みた順列の1つですが、動作しません – sagism