0

ファイルをアップロードしたのですが、ファイルをアップロードすると、そのファイルに関するデータが他のファイルに繰り返されるため、日付が重複します。適切なファイルがアップロードされています。必要に応じてファイルをダウンロードするには リンク:https://drive.google.com/file/d/0B-FjILy0V_UUVERVVDhTM3ZlU0k/view?usp=sharingアップロードされたファイルのファイル情報が繰り返されるのはなぜですか?

Main.py

import os 
import jinja2 
import webapp2 
from google.appengine.ext import blobstore 
from google.appengine.ext import ndb 
from google.appengine.ext.webapp import blobstore_handlers 
import urllib 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp import template 
from google.appengine.ext.webapp.util import run_wsgi_app 

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 UserFiles(ndb.Model): 
file1 = ndb.StringProperty() 
key1 = ndb.StringProperty() 
create1 = ndb.StringProperty() 
type1 = ndb.StringProperty() 

class PhotoUploadFormHandler(webapp2.RequestHandler): 
def get(self): 
    file_query = UserFiles.query(ancestor=PARENT_KEY) 
    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)) 
    for b in blobstore.BlobInfo.all(): 
     self.response.out.write('<li><a href="/serve/%s' % str(b.key()) + '">' + str(b.filename) + '</a>') 


# [START upload_handler] 
class PhotoUploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
def post(self): 
    try: 

     for b in blobstore.BlobInfo.all(): 
      key = str(b.key) 
      fileName = str(b.filename) 
      dateCreated = str(b.creation) 
      typeOfFile = str(b.content_type) 

     files = UserFiles(
      parent=PARENT_KEY, 
      file1=fileName, 
      create1=dateCreated, 
      type1=typeOfFile) 

     files.put() 

     self.redirect(self.request.referer) 

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

app = webapp2.WSGIApplication([ 
('/', PhotoUploadFormHandler), 
('/upload', PhotoUploadHandler) 
], debug=True) 

<!DOCTYPE html> 
<html lang ="en"> 
<head> 
    <meta charset="utf-8"/> 
    <title>File Transfer</title> 
    <link rel="stylesheet" href= "/static/styles.css"> 
</head> 
<body> 
    <h1>Upload file</h1> 
    <form action="{0}" method="POST" enctype="multipart/form-data"> 
     <table id="uploadFile"> 
      <tr id="upldF"> 
       <td id="upldF"><input type="file" name="FileToUpload" id="FileToUpload"></td> 
      </tr> 
      <tr id="upldF"> 
       <td id="upldF"><input type="submit" value="Upload File" name="submit"></td> 
      </tr> 
     </table> 
    </form> 

    <h1>Download file</h1> 
    <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> 
         {% 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.file1}}</td> 
          <td id="dld">{{file.create1}}</td> 
          <td id="dld">{{file.type1}}</td> 
         </tr> 
         {% endfor %} 
        </table> 
       </td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Download File" name="submit"></td> 
      </tr> 
     </table> 
    </form> 
</body> 

答えて

1

は、なぜあなたはすべてのアップロードのためのすべての既存のブロブストアのエントリを反復されているHTML?

for b in blobstore.BlobInfo.all(): # I don't think you need to do this 

あなたは以下のことによってアップロードされたブロブを取得することができます

upload = self.get_uploads()[0] 

を次に上記uploadオブジェクトを使用してUserFilesエントリを作成します。

+0

私にPhotoUploadHandler方法を変更された:TYPE1 \t 、 'アップロード= self.get_uploads()[0] ファイル=のUSERFILES( \t FILE1 = upload.filename()、 \t create1 = upload.creation() = upload.content_type()) files.put() \t self.redirect(self.request.referer) ' それはファイルが、ページのクラッシュをアップロードし、何の情報も表示されないので、私は何も情報が取得されていないと思います – Martin

関連する問題