使用Google App Engine将图像/视频上传到Google云存储

6
我阅读了这个问题:在使用Google应用引擎上传图片到Google云端存储时

然而,回答中的代码会先将文件上传到Blobstore,因此文件大小不得超过32MB。

我怎样才能直接将大文件上传到Google云端存储呢?

我已经检查了官方文档上传对象,但是我仍然不知道如何编写表单来发布一个大文件。


Blobstore上没有32MB的文件大小限制,而是限制了一次API调用中可以读取多少MB。应用程序一次API调用可以读取的Blobstore数据的最大大小为32兆字节。 - aschmid00
@aschmid00:感谢您的评论。但是,我仍然不知道如何在不调用API的情况下将文件上传到Blobstore... - Jerry
你的限制不在于上传API调用,而在于读取Blob的API调用。你应该先阅读文档 https://developers.google.com/appengine/docs/python/blobstore/overview#Uploading_a_Blob 当表单被渲染时需要生成上传URL,或者在稍后的时间通过AJAX调用获取它。 - aschmid00
@aschmid00:感谢您的快速回复。我确实阅读了您提到的文档,并在我的网站上使用过。但我仍然想知道如何使用表单直接上传大文件到云存储并稍后读取它。 - Jerry
@aschmid00:我已经阅读了。将txt文件写入云存储不是问题,但我对如何直接上传图像或大文件到云存储一无所知... - Jerry
显示剩余2条评论
2个回答

13

自1.7.0版本开始变得容易。

upload_url = blobstore.create_upload_url('/upload_handler', gs_bucket_name='my_bucket')

将直接上传到Google存储,并返回一个指向在Cloud Storage中上传的blob keys。


哇,它可以工作了!谢谢!使用upload_filename来设置存储桶中的文件名是否可行? - Jerry
暂时不支持使用固定文件名,我们采用“随机”文件名的方式来保证上传过程与上传到 Blobstore 的语义相同。在 Blobstore 中,您可以多次上传同一文件并生成一个新的 Blob。 - Stuart Langley
@StuartLangley 怎样才能获取这个文件名?在 BlobstoreUploadHandler 中使用 get_uploads() 只会返回一个奇怪的键。 - Julian Go
这个问题似乎已经在2013年3月11日得到了修复。https://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes - Doruk

2

upload_url = blobstore.create_upload_url('/upload', gs_bucket_name='mybucketname')

这行代码会创建一个上传链接,将文件上传到云存储的blob中,并将上传的文件同时放在blobstore中。


2
我正在使用GAE1.7.3,它仍然将其上传到Blobstore以及GCS。 - Sandeep
1
我确认它仍在同时上传到Blobstore和GCS。 - aschmid00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接