如何使用urlfetch发布静态文件?

时间:2015-09-12 15:05:46

标签: google-app-engine post urlfetch

我们说handlers: - url: /img/ static_dir: templates/img 中有以下处理程序:

templates/img

并且0001.jpg文件夹包含文件parameters = {'parm1': 'value1', 'parm2': 'value2'} parameters = urllib.urlencode(parameters) response = urlfetch.Fetch(url, payload=parameters, method=urlfetch.POST, deadline=60)

以下代码用于POST数据:

urlfetch

我应该如何将该文件添加到OidDao

1 个答案:

答案 0 :(得分:0)

默认情况下,App Engine中的静态文件可供应用程序访问。正如the docs所解释的那样,“静态文件在应用程序的文件系统中不可用”。

如果您需要为应用程序提供静态提供的文件,则可以将static_dir添加到templates处理程序节。

但是,如果您这样做,再次根据文档,文件将上传两次(到您的应用程序的文件系统和提供静态文件的单独文件系统),并且“两次上传都是针对您的代码和静态的数据存储资源配额“。

如果您这样做,您的应用程序代码(假设它位于path = os.path.join(os.path.dirname(__file__), 'templates/img/0001.jpg') 是子目录的顶级目录中)将能够访问您提到的文件(仅供阅读)路径给出:

urlfetch.Fetch

即使这样,我也不知道“将该文件添加到urlfetch”是什么意思。 payload不接受文件参数。如果你的意思是将文件的内容添加到with open(path, 'rb') as f: parameters['data'] = f.read() ,那么你可能只需要添加一个条目(使用你想要使用的名字,文件的字节作为值)到你正在编码的字典中为此目的,例如

urlencode

在致电{{1}}之前。