如何解决“[Errno 13]文件无法访问”错误?

时间:2011-04-22 08:10:46

标签: python django google-app-engine blobstore

我的网络应用程序在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 =='

感谢任何帮助 - 感谢阅读!

1 个答案:

答案 0 :(得分:4)

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