在Google App Engine(Java)中限制Blobstore上传文件类型

4

我正在使用BlobstoreService将文件上传到AppEngine的blobstore中。如何限制文件的内容类型或文件类型?例如,我只想允许上传image/jpeg文件。

2个回答

4

无法事先禁止用户上传被禁止的文件类型,因为在用户进行POST请求之前你无法知道他们要上传什么,而且中途结束POST请求没有干净的方法。然后可以在用户上传文件后检测文件类型,如果是被禁止的文件类型,则可以从blobstore删除该文件。


Nick,为什么不使用File API呢?你可以通过Mime类型进行过滤,然后决定是将其丢弃还是保存到Blobstore中。 - systempuntoout
1
@systempuntoout 因为这不会给你带来任何好处-用户已经在你执行任何检查之前将整个文件上传给你了。使用常规上传还将限制您的文件大小,以适应内存和请求大小配额。 - Nick Johnson
是的,我同意,尽管我的担忧更多地集中在计费方面。 - systempuntoout
@systempuntoout 无论如何,您都要支付带宽费用,并且立即删除的内容的存储成本几乎为零。此外,上传东西以使其被拒绝的总比率将非常小,不值得进行优化。 - Nick Johnson

2

当然,Nick的答案是正确的,你需要在服务器端进行全面的检查(类型、大小等)。如果你真的很担心,可以考虑在客户端进行一些基本的错误检查。在表单提交之前,使用JavaScript检查文件名是否以jpg结尾(以及变体)非常容易实现。但请记得在服务器上也要进行检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接