【问题标题】:How can I resolve a "[Errno 13] file not accessible" error?如何解决“[Errno 13] 文件不可访问”错误?
【发布时间】:2011-08-10 20:16:36
【问题描述】:

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

感谢您的帮助 - 感谢您的阅读!

【问题讨论】:

    标签: python django google-app-engine blobstore


    【解决方案1】:

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

    【讨论】:

    • 谢谢尼克,特殊情况让我失望了。 files.blobstore.create() 返回的 file_name 属性有什么用处?
    • @bfox 用于创建 blob,如在 sn-p 中。完成后,它就位于 blobstore 中,因此应使用其 blob ID 进行访问。
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多