通过 Chrome 上传文件的潜在问题?

Potential issue with file uploads via Chrome?

所以我的网站上有一个可用的文件上传系统....基本上每次有人使用它时它都能正常工作。有过几次用户提交了数据,页面基本上返回了 PHP UPLOAD_ERR_NO_FILE,但我只在 Chrome 浏览器中看到过这种情况(最新版本是 94.0 .4606.81 和 95.0.4638.54)。每次我自己在 Chrome 中尝试时,它都运行良好,并且这些用户从来没有真正沟通过有问题并且不会回来,我只是在日志中看到它已经发生了。我只是想知道是否有人知道任何浏览器扩展或任何可能从 Chrome 的角度干扰这一点的东西?即在发送文件之前擦除文件?

我并没有真正使用 Chrome 所以我不太了解它的功能,但我假设它并没有真正处理与其他浏览器在 HTTP 方面不同的事情headers 和数据??

我只是觉得奇怪,有人会尝试上传文件,填写所有其他输入字段,然后按提交但实际上并没有上传文件。备案:

  1. 这不是通过 AJAX,而是直接形式上传
  2. 这是 唯一捕获此特定错误的地方,因此没有其他地方 解释,因为这是一个非常具体的错误,我得到
  3. 远低于 MAX_FILE_SIZE 和 POST_MAX_SIZE 在 php.ini 所以它甚至不像服务器正在擦除它们,这 无论如何是不可能的,因为我什至不会在 脚本
  4. 它总是在同一个地方,每次都在同一条线上。我有两个文件上传,一个是可选的(预览图像),另一个是强制性的(zip)。它甚至不像他们在预览中上传一个 zip,因为预览首先被验证没有错误.....
  5. 然而,不同的下载类别确实会发生这种情况
  6. 不能缓存,因为每次请求都会在提交后附加时间戳URL

UPLOAD_ERR_NO_FILE

Value: 4; No file was uploaded. (ref)

是没有文件吗

喜欢此表单提交但未选择文件:

<form method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit"> <input type="reset"> 
</form>

因为它是客户端,所以可以有客户端脚本在提交表单时删除文件。例如:

document.forms[0].file.value = ""

魔法?奇怪吗?可能不会,您的表单处理应该处理它。例如。再次显示表单,标记数据丢失/错误的输入,提供可访问的错误消息并使用提交的值填写所有表单字段,以便用户可以轻松修复任何错误,并且不得完全重新填写表单或清除带有重置按钮的整个表单。

您还可以使用客户端脚本在客户端镜像错误处理,以便更快地为用户提供反馈,并且您可以为常见的用户输入错误节省往返服务器的时间。