发布文件上传的最大大小 - 通过HTML设置的任何方式


Maximum size of post file upload - any way to set via HTML?

因此,我们允许将一些上传到我们的网络服务。

头像等。

我们通过 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>