我正在尝试使用Spring CommonsMultipartResolver
来限制图像大小。问题是上传后会立即抛出“文件大小异常”,但上传会一直持续到最后(由于在表单上执行POST的性质)。因此,我最终在磁盘上保存一个临时文件,检查大小,然后向用户显示验证错误消息,并在此之上浪费额外的带宽/资源。
有没有办法通过在达到指定的图像尺寸时取消表单提交来解决问题?
答案 0 :(得分:2)
这只能通过在客户端检查来实现。您可以使用提供HTML5 File
API的新a size
property来执行此操作,该{{3}}返回以字节为单位的大小。在HTML4中无法实现这一点(期望可能有一些特定于IE的ActiveX函数)因此,您是否依赖于目标webbrowser它是否有效。 FF> = 3.6,Chrome> = 2和Safari> = 4支持HTML5(不,不在IE中,甚至不在IE9中!)。在任何情况下,您都应该保留服务器端代码以检查文件大小,不仅是不支持它的浏览器的后备,还有最终用户禁用或破解JS代码的情况。
这是一个启动示例:
<input type="file" onchange="checkSize(this)" />
与
function checkSize(input) {
if (input.files && input.files[0].size > (10 * 1024)) {
alert("File too large. Max 10KB allowed.");
input.value = null;
}
}
是的,input.files
是一个数组。自HTML5起,<input type="file">
允许按multiple
属性选择多个文件。