我想根据下一个要求限制文件上传期间的大小:
1-客户端(除非使用Flash或Applet等客户端插件,否则这几乎是不可能的)所以我放弃了这个
2-在服务器端,我可以在将文件/图像/视频存储到数据库之前知道它的大小吗?
谢谢!
答案 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条目的大小。