2013-01-02 50 views
5

我想从Google应用程序引擎应用程序访问我的计算机中的文件。如果我将该文件放在应用程序的src文件夹中,则没有问题,但我需要此文件超出该文件夹。IOError:[Errno 13]文件无法访问GAE

当我尝试访问该文件,我得到了一个错误:

Traceback (most recent call last): 
File "C:\Program Files  (x86)\Google\google_appengine\google\appengine\ext\webapp\_webapp25.py", line 712, in __call__ 
handler.post(*groups) 
File "C:\Users\path\Documents\path\oauth2client\appengine.py", line 469, in check_oauth 
return method(request_handler, *args, **kwargs) 
File "C:\Users\path\Documents\path\myapp.py", line 88, in post 
filename=open('C:/Users/path_to_file/Documento 1.docx','r') 
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 635, in __init__ 
raise IOError(errno.EACCES, 'file not accessible', filename) 
IOError: [Errno 13] file not accessible: 'C:/Users/path_to_file/Documento 1.docx' 

我已阅读,如果一个文件被app.yaml中定义为静态无法从GAE访问。这是我的app.yaml。我想不通,如果有什么错误:

application: myapp 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: /.* 
script: myapp.py 

这是一种尝试访问该文件的应用程序的一部分:

filename='C:/Users/path_to_file/Documento 1.docx' 
media_body = MediaFileUpload(filename,resumable=True) 

是否有人知道为什么我会得到“文件不可访问“错误?

谢谢!

+0

的可能重复[ IOError:\ [Errno 13 \]文件无法通过Google AppEngine 1.6.1访问](http://stackoverflow.com/questions/8799304/ioerror-errno-13-file-not-accessible-with-google-appengine-1 -6-1) – bain

回答

9

将文件放在与其他应用程序文件(即app.yaml所在的位置)相同的目录中。

您希望应用程序访问的所有文件必须位于主应用程序目录下的相同位置。

GAE无法访问计算机上某处的任意文件,就像在部署时无法访问其他地方保存的文件一样。

filename='myfile.doc' 

这是假设它在'根'(与app.yaml相同)。

+1

即使它可以访问这些文件,也可以在Google上运行的应用程序中对其硬盘上的位置进行硬编码云是一个坏主意。如果Google可以直接访问您的硬盘驱动器,他们不会告诉您这一点。 – geoffspear

+0

感谢您的回答! – user1930068

0

在你的app.yaml文件,你需要做可见的文件到您的应用程序:

handlers: 
- url: /<location to your data files> 
    script: <your app name>.app 

举例来说,在我的app.yaml文件,它看起来像这样

- url: /data 
    script: main.app