Google App Engine - 将Blobstore API与Google云端存储配合使用

时间:2014-07-06 04:16:30

标签: python google-app-engine google-cloud-storage

我必须存储大小超过1MB的文件,谷歌应用引擎建议我将它们存储在Google云端存储中。应用引擎BlobProperty不合适。

Using Blobstore API with Google Cloud Storage部分建议使用create_upload_url function&#39s的gs_bucket_name参数。

我试过了。

gcs_upload_url = blobstore.create_upload_url('/myupload', gs_bucket_name='bucketname.appspot.com/')

我获得的POST结果不是/myupload, 它有点像

<form action="http://myapp.appspot.com/_ah/upload/XXXXXXXXXXX7NNN-XXXXYYY/" method="post" enctype="multipart/form-data">

我在/ upload /之后更改了部分,但重点是,它显然错过了创建一个正确的上传URL,我的处理程序可以识别它。

将create_upload_url与gs_bucket_name一起使用的正确方法是什么,并且还获得了处理帖子的正确网址?

显然官方文档在这里没有帮助。

2 个答案:

答案 0 :(得分:3)

您在create_upload_url函数中传递的路径是success_path。请参阅下面的说明。

  

在将随表单提交的文件上传到Blobstore之后,将处理上传请求的请求处理程序的URL路径。

在将文件上传到BlobStore或Google云端存储后,App引擎会调用success_path。

  

当用户提交上传网络表单时,如果您使用该表格而不是Blobstore,则上传的数据将直接转到Blobstore或Google云端存储。 (Google云端存储需要gs_bucket_name参数。)Blobstore重写传入请求以删除上传的数据(MIME部分正文)并添加Blobstore密钥(作为MIME部分中的标题),然后将重写的请求传递给应用程序与给予create_upload_url()的URL路径关联的处理程序,作为success_path。该路径的处理程序可以处理表单的其余部分。

此功能提供的URL旨在用作上传表单的操作。您提供的路径类似于上传后处理程序。

答案 1 :(得分:2)

这是正确的方法。上传URL由AppEngine本身处理:它将接受文件上传,然后直接调用您自己的处理程序。