我能做些什么来限制可上传文件的大小?我知道我可以用SWFUpload限制它的客户端,但我怎么能限制它的服务器端?App Engine Blobstore - 如何限制用户可以上传的文件的大小?
如何防止某人上传1GB文件并占用我的配额?
我能做些什么来限制可上传文件的大小?我知道我可以用SWFUpload限制它的客户端,但我怎么能限制它的服务器端?App Engine Blobstore - 如何限制用户可以上传的文件的大小?
如何防止某人上传1GB文件并占用我的配额?
App Engine 1.5.4 SDK引入了一个选项来指定blob上传大小的限制。
请参阅UploadOptions类的maxUploadSizeBytes
和maxUploadSizeBytesPerBlob
。
在调用数据存储区API之前,将下面的代码放在要接收数据的serlet中。
// Determine the HTTP method
long maxSize = 1024*1024 * 50; //Limit 50 MB
boolean isPostMethod = request.getMethod().equals("POST");
// Verify the content length
int contentLength = request.getContentLength();
if (isPostMethod && (contentLength < 0 || contentLength > maxSize))
//posted data size is not in acceptable range
else {
// Process Data
}
无法从上传太大(尽管这会成为一个好feature request)文件禁止人。你可以做的是检查上传的blob的大小,如果它太大,立即删除它。
我提交了一项功能请求 - http://code.google.com/p/googleappengine/issues/detail?id= 3554 – Kyle 2010-08-06 22:56:19
现在已经实施 – systempuntoout 2011-09-13 07:19:22
正如OP所说,这是使用App Engine blobstore API,所以这不适用。 – 2010-08-06 10:04:50
从哪里他将调用blobstore API?从一个servlet内?您是否告诉我哪些代码行在App Engine中不适用? – Manjoor 2010-08-06 10:37:19
如果您阅读blobstore(与数据存储区不同)的文档,您会发现以上所有行都不适用 - 您的servlet不接受来自用户的数据,blobstore会这样做。用户提交的表单直接进入blobstore,而不是你的servlet。 http://code.google.com/appengine/docs/java/blobstore/overview.html – 2010-08-06 19:55:48