Google应用引擎 - 限制文件大小上传

时间:2011-06-05 18:34:51

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:6)

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

修改
现在是fixed

答案 1 :(得分: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");
            }
        }
    });

答案 2 :(得分:1)

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

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