【问题标题】:Maximum size of post file upload - any way to set via HTML?上传文件的最大大小 - 通过 HTML 设置的任何方式?
【发布时间】:2013-11-06 04:00:24
【问题描述】:

因此,我们允许向我们的网络服务上传一些内容。

头像之类的。

我们通过 php 的 upload_max_filesize 将这些文件上传的最大大小设置为 8MB。

这很好用,但如果用户上传更大的图像,例如 15MB,则会在我们的 php 日志中转储错误。

我们希望避免这种情况。

所以:

是否可以通过 HTML 设置文件的最大上传大小,以便超过我们指定大小的上传甚至不会发送到我们的服务器,从而避免日志中显示的错误?

这是我们试图避免 BTW 的 PHP 错误:

PHP Warning:  POST Content-Length of 11978117 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

【问题讨论】:

  • 我应该提一下:我知道这纯粹是装饰性的......转储在 php 日志中的错误是一个警告......但我认为应该有一种方法可以避免出现这些错误在我们的日志文件中......一旦我们看到那里有任何内容,我们最终不得不查看......
  • 好吧,你可以阻止 PHP 记录所有警告,或者临时设置 error_reporting 以在特定方法中这样做。
  • kyra: a) 6327965 中显示的方法有效...除了 ie :( 这是一个主要缺点。b) 因为这个警告是在 php 实际解析 + 执行脚本之前转储的,没有做一些花哨的 apache setEnv 等等,没有办法简单地做一个 ini_set(...忽略错误...)。另外,这最终会在我们的头像上传处理程序中隐藏所有其他错误......我们不想这样做。
  • @anonymous-one 也可以不使用浏览器上传文件,因此您将永远无法隐藏所有错误。关于 IE,一种方法是使用 JavaScript File API 检查文件大小。

标签: php html file post upload


【解决方案1】:

您不能使用 HTML 标记来限制文件大小。 (在早期,RFC 1867 表示 maxlength 属性可以做到这一点,但该功能从未实现或纳入 HTML 规范。)

但是,相当现代的浏览器支持File 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>

【讨论】:

  • 我已选择此作为最佳答案,因为它是您能得到的最接近的答案...afaik...
猜你喜欢
  • 2016-09-29
  • 1970-01-01
  • 2020-01-17
  • 2019-12-16
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
相关资源
最近更新 更多