我必须存储大小超过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一起使用的正确方法是什么,并且还获得了处理帖子的正确网址?
显然官方文档在这里没有帮助。
答案 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本身处理:它将接受文件上传,然后直接调用您自己的处理程序。