【问题标题】:Uploading a File to GAE Blobstore from URL从 URL 将文件上传到 GAE Blobstore
【发布时间】:2013-07-22 22:08:33
【问题描述】:

我需要从一个 URL 获取视频,例如:

https://zencoder-temp-storage-us-east-1.s3.amazonaws.com/o/20130722/5aacb76fc3fd47715c0329d1235dcccf/4fc612e92131e159abc761f7d54d86b5.mp4?AWSAccessKeyId=AKIAI456JQ76GBU7FECA&Signature=AGgZb1eMr105RXcoQFp8yFFTfFg%3D&Expires=1374614893

然后使用 Google App Engine 将其保存到 blobstore(或者如果 blobstore 无法直接从 URL 下载,则可能是 Google Cloud Storage)是否有一种简单的方法可以做到这一点?我已经设置好了,这样我就可以让用户上传视频,但我不确定这样做。 URLFetch 库是我要找的吗?

会不会是这样的:

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
    #I'm just not sure what to do here, how I can get that 'file' from a URL
    upload_files = self.get_uploads('file')
    blob_info = upload_files[0]

    video = Video(
        title = "some title",
        video_ref = blob_info.key())
    video.put()

【问题讨论】:

    标签: python google-app-engine blobstore


    【解决方案1】:

    是的,您需要使用 urlfetch 然后使用 google 云存储客户端库 (https://developers.google.com/appengine/docs/python/googlecloudstorageclient/functions#open) 来写入结果。您需要考虑 urlfetch 响应大小限制为 32mb,因此您需要将下载分成 32mb 块,并且还有 60 秒的用户请求限制或 10 分钟的任务队列限制或没有超时限制的使用后端。

    您也可以直接上传到 blobstore 或 cloudstorage (https://developers.google.com/appengine/docs/python/blobstore/#Uploading_a_Blob),由专门用于处理这些上传的特殊实例处理。

    【讨论】:

    • “直接上传”是什么意思,是什么特殊情况?
    • 您上面的示例代码似乎是针对 blobstore 处理程序的结果。因此,如果您使用 action=blobstore.create_upload_url('/upload') 将 /upload 路由到 UploadHandler 的表单发布到表单,则可以使用此功能。除了 blobstore 文件大小限制之外,这没有超时限制。
    • 好吧,我很清楚如何让用户上传视频,我只需要从不同的 URL 进行操作
    • 那么是的,唯一的方法是使用云存储客户端或文件 api 下载和写入,我认为它已被弃用。希望云存储客户端支持blobstore。
    • 有没有办法或工作示例说明如何将 Google Cloud Storage 与 JAVA/JAVASCRIPT 一起使用,而不是始终使用 Python Python Python 和其他时间 Python? :-)
    猜你喜欢
    • 2013-02-23
    • 2014-10-10
    • 2015-06-18
    • 1970-01-01
    • 2015-12-11
    • 2014-06-27
    • 2012-08-04
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多