如何解决“[Errno 13] 文件不可访问”错误?
我的网页应用程序在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错误
[错误号 13] 文件无法访问: '/blobstore/writable:NDNFUjNIVDdVQTM4Rk9aSE1aQkJMUzJUMzVDRVNRVEhJSjU3RUhWOE9ZMkk3QlNWR0FDR0JDOFUxSlA0Wlk3MA=='
任何帮助都非常感谢 - 谢谢你的阅读!
1 个回答
4
Blobstore 文件就存储在那个叫做 blobstore 的地方。open
是一个用来打开本地文件的函数(不过有些特殊情况,比如 写入 blob 的时候就不一样)。根据 文档 的说明,如果你想在文件处理完成后打开 blobstore 文件,你需要先调用 files.blobstore.get_blob_key(file_name)
这个函数,传入文件名,这样你就能得到一个 blob 键对象,用来引用这个 blob(然后可以用 BlobReader
来打开它)。