【问题标题】:Google app engine - limit file size upload谷歌应用引擎 - 限制文件大小上传
【发布时间】:2013-09-19 05:21:31
【问题描述】:

我想根据下一个要求限制文件上传期间的大小:

1- 客户端(这几乎是不可能的,除非使用 Flash 或 Applets 等客户端插件)所以我放弃了这个

2-在服务器端,我可以在将文件/图像/视频存储到数据库之前知道它的大小吗?

谢谢!

【问题讨论】:

    标签: google-app-engine file-upload limit


    【解决方案1】:

    使用Blobstore服务,目前无法限制文件大小上传(打开问题here)。
    使用简单的BlobProperty 存储数据,您可以在上传后使用len(uploaded_blob) 检查 blob 的大小。

    编辑
    现在是fixed

    【讨论】:

      【解决方案2】:

      自 1.5.4 版以来,create_upload_url 采用了可限制上传大小的额外可选参数

      create_upload_url(success_path, max_bytes_per_blob=None, max_bytes_total=None, rpc=None, gs_bucket_name=None)
      

      据我所知,max_bytes_per_blob 限制了每个上传文件的大小,而max_bytes_total 限制了一个请求中上传的所有文件的总大小。 详情见https://developers.google.com/appengine/docs/python/blobstore/functions

      例如将上传大小限制为 5MB,这样调用它:

      upload_url = blobstore.create_upload_url('/upload', max_bytes_total=5000000)
      

      如果上传大小大于限制,则返回 HTTP 状态 413(请求实体太大)。 如果你需要,你可以像这样在 jQuery 中拦截它:

          $("#file_form").ajaxForm({
              success : function(response) {
                  ...
              },
              error : function(jqXHR, textStatus, errorThrown) {
                  if (jqXHR.status == 413) {
                      $("#error_message").text("Uploaded files should not be larger than 5MB");
                  }
              }
          });
      

      【讨论】:

        【解决方案3】:

        如果您使用的是 Google Blobstore(您可能会使用 App Engine),那么我认为您遇到了一些困难。作为this post states,您的选择是立即检查文件大小并在太大时将其删除。也许在架构上,Google 很难在数据存储之前在 BlobStore 上提供验证。我不知道。

        也许您想在Google App Engine Issue Tracker 上为该问题加注星标。目前尚不清楚您使用的是 Java 还是 Python,但如果您查看相关的 Google API 文档,您可以确定如何检查 Blob 条目的大小。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-01
          • 1970-01-01
          • 2012-07-27
          • 1970-01-01
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 2012-05-01
          相关资源
          最近更新 更多