1

我的网络应用程序在 Google App Engine 上使用 Django (django-nonrel)。我正在尝试打开 Blobstore 文件。

我的代码成功地创建了 Blobstore 文件和一个 Photo 对象来引用 Blobstore 的文件名(以及其他一些元数据)。

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

...

  file_name = files.blobstore.create(mime_type=mimetypes.guess_type(request.FILES['photo'].name)[0])

  with files.open(file_name, 'a') as f:
    f.write(photo_data)

  files.finalize(file_name)

  photo = Photo()
  photo.file_name = file_name
  ...
  photo.save()

但是,尝试打开文件会产生以下错误:

opened_file = open(photo.file_name)

/post_photo_to_facebook/ 处的 IOError

[Errno 13] 文件不可访问:'/blobstore/writable:NDNFUjNIVDdVQTM4Rk9aSE1aQkJMUzJUMzVDRVNRVEhJSjU3RUhWOE9ZMkk3QlNWR0FDR0JDOFUxSlA0Wlk3MA=='

任何帮助表示赞赏 - 感谢阅读!

4

1 回答 1

4

Blobstore 文件存储在 Blobstore 中。open是一个在本地文件系统上打开文件的函数(模特殊情况,如写入blob)。根据文档,如果要在完成后打开 blobstore 文件,则需要调用files.blobstore.get_blob_key(file_name)文件名以获取应该用来引用 blob 的 blob 密钥对象(并使用打开它BlobReader)。

于 2011-04-22T08:59:49.953 回答