2016-05-13 13 views
2

アップロード作業ができましたが、今はファイルをリストに表示する必要があります(ファイル名、アップロードされた日付/作成されたファイルタイプ、ダウンロードオプション)それを動作させるにはGAE Pythonのファイルのダウンロード/一覧表示

私が探しているのは知っている:filename(画像とチェックボックスを下のhtmlで見ることができます)、コンテンツタイプ、作成日。

HTML:

<form action="/download" method="post"> 
     <table id="downloadFile" width="100%"> 
      <tr> 
       <td> 
        <table id="downloadFileDetails"> 
         <tr id="dld"> 
          <td id="dld" width="2%"></td> 
          <td id="dld" width="80%">File Name</td> 
          <td id="dld" width="10%">Upload Date</td> 
          <td id="dld" width="8%">Format</td> 
         </tr> 
         <tr> 
          <td id="dld" style="vertical-align: middle; text-align: center "><input type="checkbox" name="checkFile" >&nbsp</td> 
          <td id="dld">test</td> 
          <td id="dld">test</td> 
          <td id="dld">test</td> 
         </tr> 
         {% for file in file_query %} 
         <tr> 
          <td id="dld" style="vertical-align: middle; text-align: center "><input type="checkbox" name="checkFile" >&nbsp</td> 
          <td id="dld">{{file.user}}</td> 
          <td id="dld">{{file.blob_key}}</td> 
          <td id="dld">{{file.last_touch}}</td> 
         </tr> 
         {% endfor %} 
        </table> 
       </td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Download File" name="submit"></td> 
      </tr> 
     </table> 
    </form> 

Pythonコード:私は、ログに取得

import os 

from google.appengine.api import users 
from google.appengine.ext import blobstore 
from google.appengine.ext import ndb 
from google.appengine.ext.webapp import blobstore_handlers 
import webapp2 
import jinja2 


jinja_env = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), 
    autoescape=True) 

#Key to serve as a parent 
PARENT_KEY = ndb.Key("Entity", "files_root") 

# This datastore model keeps track of which users uploaded which photos. 
class UserPhoto(ndb.Model): 
user = ndb.StringProperty() 
blob_key = ndb.BlobKeyProperty() 
filename = ndb.StringProperty() 
#last_touch = ndb.DateTimeProperty(auto_now_add = True) 

class PhotoUploadFormHandler(webapp2.RequestHandler): 
def get(self): 
    file_query = UserPhoto.query(ancestor = PARENT_KEY)#.order(-UserPhoto.last_touch) 
    upload_url = blobstore.create_upload_url('/upload') 
    templateHome = jinja_env.get_template("templates/page.html") 
    self.response.out.write(templateHome.render({"file_query": file_query}).format(upload_url)) 

# [START upload_handler] 
class PhotoUploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
def post(self): 
    try: 
     upload = self.get_uploads()[0] 
     user_photo = UserPhoto(parent = PARENT_KEY, 
      user=users.get_current_user().user_id(), 
      blob_key=upload.key(), 
      filename = upload.filename()) 
     user_photo.put() 


     self.redirect(self.request.referer) 

    except: 
     self.error(500) 
# [END upload_handler] 

app = webapp2.WSGIApplication([ 
('/', PhotoUploadFormHandler), 
('/upload', PhotoUploadHandler) 
#('/view_photo/([^/]+)?', ViewPhotoHandler), 
], debug=True) 

メッセージ:

INFO  2016-05-14 20:54:05,506 module.py:787] default: "GET/HTTP/1.1" 200 1997 
INFO  2016-05-14 20:54:05,525 module.py:787] default: "GET /static/styles.css HTTP/1.1" 304 - 
INFO  2016-05-14 20:54:05,546 module.py:787] default: "GET /favicon.ico HTTP/1.1" 200 8348 
INFO  2016-05-14 20:54:11,806 module.py:787] default: "POST /upload HTTP/1.1" 500 - 

答えて

0

あなたはthe docsからサンプルアプリケーションを再作成しているように見えます。 here見つけることができる情報の一つの重要な部分、上に練りその例:

get_uploads()メソッドは、BlobInfoオブジェクトのリストを返し、要求内の各アップロードされたファイルのための1つ。

ファイル名をキャプチャしたいのであれば、たとえば、あなたがアップロード・ハンドラでは、このような何かをする必要があります(それに応じてUserPhotoモデルを調整):

upload = self.get_uploads()[0] 
user_photo = UserPhoto(
    user=users.get_current_user().user_id(), 
    blob_key=upload.key(), 
    filename=upload.filename 
) 
user_photo.put() 

get_uploads方法BlobInfoオブジェクトのリストを返します。私はAppEngineの上のアップロードの経験を持っていないと、このコードはテストされていないので、それはいくつかにずれることがあります:

注:これらのオブジェクト上のドキュメントはここで見つけることができます詳細の私は文書で行くつもりです。しかし、それは根本的な問題になると思う。詳細を変更する必要がある場合は、私に知らせてください。

+0

私はアプリを再作成していますが、あなたの提案を実装した後も、blobsoreモジュールの詳細を読むと、ページが実行されない同じ問題が発生します – Martin

+0

@Martinあなたの問題を明確にする必要があります。ページが動かないということは、さまざまなことを意味する可能性があり、私はあなたの元の質問をどのように読んでいないのですページまたはコンソールのいずれかにエラーが表示されていますか? – klenwell

+0

これは、 'INFO 2016-05-14 20:45:14,368 module.py:787]のデフォルトの設定を修正した後のエラーです:" GET/HTTP/1.1 "200 1997 INFO 2016-05-14 20: 45:14,388 module.py:787]デフォルト: "GET /static/styles.css HTTP/1.1" 304 - INFO 2016-05-14 20:45:14,408 module.py:787]デフォルト: "GET/favicon。 "HTTP/1.1 HTTP/1.1"のPOST /アップロードHTTP/1.1 "00 - " – Martin

関連する問題