更新
这个问题最初是在不支持程序化文件创建的时候提出的(例如通过网址)。情况发生了变化,请参阅:http://code.google.com/appengine/docs/java/blobstore/overview.html#Writing_Files_to_the_Blobstore
我正在访问几个不同的API来获取图像。我的应用程序是GAE + Python,我想使用Blobstore来保存这些图像。 GAE Blobstore文档提供了如何通过表单将图像保存到Blobstore的明确示例,但不直接来自网址。
我想知道如何将http://api.website.com/images/foo.jpg保存到Blobstore。
答案 0 :(得分:2)
HTTP POST到您自己的表单工作。我没有尝试提交文件,但这是我提交表单的方式。您可以从互联网上获取该文件,将其添加到表单提交中,该文件将存储在您的blobstore中。
import urllib
data = urllib.urlencode({"id":str(id), "password" : self.request.POST['passwd'], "edit" : "edit"})
result = urlfetch.fetch(url="http://www.montao.com.br/upload",
payload=data,
method=urlfetch.POST,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
还有类似问题已回答here
我希望它适合你。
答案 1 :(得分:2)
将新的File API与urlfetch API结合使用,您应该能够通过表单传递图像URL,将其提取到服务器端并将其写入blobstore:
答案 2 :(得分:0)
您可以编写一个额外的处理程序,将输入网址的内容上传到blob存储处理程序。即自动化表单提交过程。向blob存储处理程序发出POST
请求,url对图像进行编码。
但唯一的问题是如果文件太大,那么你可能会遇到超时异常。