我想根据未来需求的文件上传过程中限制大小:谷歌应用程序引擎 - 限制文件大小上载
1-客户端(这几乎是不可能的,除非使用客户端插件,如Flash或小程序)所以我放弃了这一个
2-在服务器端,我可以知道文件/图像/视频的大小,然后将其存储在数据库中?
谢谢!
我想根据未来需求的文件上传过程中限制大小:谷歌应用程序引擎 - 限制文件大小上载
1-客户端(这几乎是不可能的,除非使用客户端插件,如Flash或小程序)所以我放弃了这一个
2-在服务器端,我可以知道文件/图像/视频的大小,然后将其存储在数据库中?
谢谢!
随着Blobstore服务,目前没有办法限制文件大小上传(开放问题here)。
使用简单的BlobProperty存储您的数据,您可以使用len(uploaded_blob)
检查上传后斑点的大小。
编辑:
这是目前fixed
如果您使用的是Google Blobstore(您可能会使用App Engine),那么我认为您遇到了一些困难。由于this post states您的选择是立即检查文件大小,并删除它,如果太大。在架构上,Google可能很难在数据存储之前在BlobStore上提供验证。我不知道。
也许你想对Google App Engine Issue Tracker上的问题加星标。目前还不清楚您是使用Java还是Python,但如果您查看相关的Google API文档,您可以确定如何检查Blob条目的大小。
自发布1.5.4 create_upload_url
需要额外的可选参数正如我得到它max_bytes_per_blob
限制的大小,可以限制上传大小
create_upload_url(success_path, max_bytes_per_blob=None, max_bytes_total=None, rpc=None, gs_bucket_name=None)
每个文件都被上传,而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");
}
}
});