因此,我们允许将一些上传到我们的网络服务。
头像等。
我们通过 php 的upload_max_filesize将这些文件上传的最大大小设置为 8MB。
这很好用,除了如果用户上传更大的图像,例如 15MB,错误将被转储到我们的 php 日志中。
我们希望避免这种情况。
所以:
是否可以通过HTML设置文件的最大上传大小,以便甚至不会将超过我们指定大小的上传发送到我们的服务器,从而避免日志中显示的错误?
这是我们试图避免的PHP错误:
PHP Warning: POST Content-Length of 11978117 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
不能使用 HTML 标记限制文件大小。(在很早期,RFC 1867 说 maxlength
属性可以做到这一点,但这个特性从未实现或纳入 HTML 规范。
但是,相当现代的浏览器支持文件 API,它允许您使用客户端 JavaScript 编写此类检查。例:
<script>
function checkFiles(files) {
var ok = true;
if(files) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
if(file.size > 8 * 1024 * 1024) {
alert("The file" + file.name + " is too big.");
ok = false; } } }
return ok;
}
</script>
[...]
<form action="..." method="post" onsubmit=
"return checkFiles(document.getElementById('f').files)"
[...]
<div><label for="f">File(s):</label>
<input id="f" type="file" name="file" multiple></div>