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

1 投票
1 回答
730 浏览
提问于 2025-04-16 16: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 来打开它)。

撰写回答