簡體   English   中英

為什么我的文件信息會針對上傳的文件重復

[英]Why does my file information repeat for uploaded files

我已經在表中上載了文件列表,但是當我上載文件時,關於文件的數據會重復到其他文件,導致日期重復,但是在blobstore查看器中,我可以看到正在上載的正確文件。 必要時鏈接到下載文件: https : //drive.google.com/file/d/0B-FjILy0V_UUVERVVDhTM3ZlU0k/view?usp=sharing

主程序

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)

的HTML

 <!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>

為什么要為每個上傳迭代所有現有的Blobstore條目?

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

您可以通過執行以下操作來獲取要上傳的Blob:

upload = self.get_uploads()[0]

然后使用上面的upload對象創建UserFiles條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM