我想使用GAE创建一个过程,通过该过程,给定一个url,一个文件被下载并作为blob存储在blobstore中。完成此操作后,我希望将此Blob作为POST数据传递到第二个URL。但是,为了使第二部分正常工作,我需要能够将blob作为文件实例打开。

我已经弄清楚如何做的第一部分

from __future__ import with_statement
from google.appengine.api import files

imagefile = urllib2.urlopen('fileurl')
# Create the file
file_name = files.blobstore.create(mime_type=imagefile.headers['Content-Type'])
# Open the file and write to it
with files.open(file_name, 'ab') as f:
    f.write(imagefile.read())
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)


但是我不知道该怎么做第二部分。到目前为止,我已经尝试过


ffile = files.open(files.blobstore.get_file_name(blob_key), 'r')
from google.appengine.ext import blobstore

ffile = blobstore.BlobReader(blob_key)

from google.appengine.ext import blobstore

ffile = blobstore.BlobInfo.open(blobstore.BlobInfo(blob_key))



所有这些都为False给出isinstance(ffile, file)

任何帮助表示赞赏。

最佳答案

ffile = blobstore.BlobReader(blob_key)有效。但是,返回的对象只有一个类似文件的接口;它不会扩展文件类。因此,实例测试将无法正常工作。尝试类似if ffile and "read" in dir( ffile )的方法。

09-10 08:19
查看更多