Google app engine 如何操作google app engine数据存储中的文件

Google app engine 如何操作google app engine数据存储中的文件,google-app-engine,file,google-cloud-datastore,uploading,Google App Engine,File,Google Cloud Datastore,Uploading,我的问题围绕着一个用户将文本文件上传到我的应用程序。我需要获取此文件并在将其保存到数据存储之前使用我的应用程序对其进行处理。从我读到的一小部分内容中,我了解到用户上传的内容直接以blob的形式发送到数据存储,如果我可以获取该文件,对其执行操作(意味着更改其中的数据),然后将其重新写入数据存储,这是可以的。所有这些操作都需要由应用程序完成。 不幸的是,从数据存储文档中, 应用程序无法直接在数据存储中创建blob。那是我最头疼的事。我只需要从我的应用程序在数据存储中创建一个新的blob/文件,而无需

我的问题围绕着一个用户将文本文件上传到我的应用程序。我需要获取此文件并在将其保存到数据存储之前使用我的应用程序对其进行处理。从我读到的一小部分内容中,我了解到用户上传的内容直接以blob的形式发送到数据存储,如果我可以获取该文件,对其执行操作(意味着更改其中的数据),然后将其重新写入数据存储,这是可以的。所有这些操作都需要由应用程序完成。 不幸的是,从数据存储文档中,
应用程序无法直接在数据存储中创建blob。那是我最头疼的事。我只需要从我的应用程序在数据存储中创建一个新的blob/文件,而无需任何用户上传交互。

blobstore!=数据存储


只要您的数据是的,您就可以将数据读写到数据存储,谢谢您的帮助。经过许多不眠之夜,3本应用程序引擎书籍和大量的谷歌搜索,我找到了答案。下面是代码(它应该是非常不言自明的):

from\uuuuuu future\uuuuuuu使用\u语句导入
从google.appengine.api导入文件
从google.appengine.ext导入blobstore
从google.appengine.ext导入webapp
从google.appengine.ext.webapp导入util
类MainHandler(webapp.RequestHandler):
def get(自我):
self.response.out.write('Hello WOrld')
形式='''
上传文件:
''' 自我.回应.输出.写入(表格) blob_key=“w0MC_7MnZ6DyZFvGjgdgrg=” blob_info=blobstore.BlobInfo.get(blob_键) 开始=0 end=blobstore.MAX\u BLOB\u FETCH\u SIZE-1 read\u content=blobstore.fetch\u数据(blob\u键,开始,结束) self.response.out.write(读取内容) def post(自我): self.response.out.write('Posting…')) content=self.request.get('文件') #self.response.out.write(内容) #印刷内容 file\u name=files.blobstore.create(mime\u type='application/octet-stream') 以文件的形式打开(文件名为“a”): f、 写作(内容) files.finalize(文件名) blob\u key=files.blobstore.get\u blob\u key(文件名) 打印“Blob Key=” 打印blob_键 def main(): application=webapp.WSGIApplication([('/',MainHandler)],debug=True) util.run_wsgi_应用程序(应用程序) 如果“名称”=“\uuuuuuuu主要”: main()
参见;现在可以使用files API以编程方式写入blobstore。(注意:这是在同一页上,上面说你不能以编程方式创建Blob;保持文档的最新状态就这么多了:))此外,如果你明确使用blobstore进行上传,用户上传只会直接进入blobstore,否则会像任何其他表单一样发送到你的应用程序。
from __future__ import with_statement
from google.appengine.api import files
from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class MainHandler(webapp.RequestHandler):
    def get(self):
        self.response.out.write('Hello WOrld')
        form=''' <form action="/" method="POST" enctype="multipart/form-data">
Upload File:<input type="file" name="file"><br/>
<input type="submit"></form>'''
        self.response.out.write(form)
        blob_key="w0MC_7MnZ6DyZFvGjgdgrg=="
        blob_info=blobstore.BlobInfo.get(blob_key)
        start=0
        end=blobstore.MAX_BLOB_FETCH_SIZE-1
        read_content=blobstore.fetch_data(blob_key, start, end)
        self.response.out.write(read_content)
    def post(self):
        self.response.out.write('Posting...')
        content=self.request.get('file')
        #self.response.out.write(content)
        #print content
        file_name=files.blobstore.create(mime_type='application/octet-stream')
        with files.open(file_name, 'a') as f:
            f.write(content)
        files.finalize(file_name)
        blob_key=files.blobstore.get_blob_key(file_name)
        print "Blob Key="
        print blob_key

def main():
    application=webapp.WSGIApplication([('/', MainHandler)],debug=True)
    util.run_wsgi_app(application)

if __name__=='__main__':
    main()