所以我有一个工作的文件上传系统在我的网站....每次有人使用它,它基本上都有效。有一些情况下,用户提交了数据,页面基本上返回了一个PHP UPLOAD_ERR_NO_FILE,但我只看到这种情况发生在Chrome浏览器(最新版本为94.0.4606.81 &95.0.4638.54)。每次我尝试在Chrome自己的工作很好,这些用户从来没有真正沟通有一个问题,不回来,我只是看到它在日志中,它发生了。我只是想知道是否有人知道任何浏览器扩展或任何可能干扰这从Chrome的角度来看?也就是说,在发送文件之前把文件擦干净?
我不真的使用Chrome,所以我不知道它是如何运作的,但我假设它并没有真正处理的东西,不同于其他浏览器在HTTP头和数据方面??
我只是觉得很奇怪,有人会尝试上传文件,填写所有其他输入字段,按提交,但实际上不上传文件。郑重声明:
- 这不是通过AJAX,这是一个直接的表单上传
- 这是只有一个地方可以捕获这个特定的错误,所以没有其他的解释这是一个非常具体的错误,我得到
- 它远远低于MAX_FILE_SIZE和POST_MAX_SIZE在php。ini中,这甚至不像是服务器在清除它们反正是不可能的,因为我甚至都不会走这么远脚本
- 它总是在同一个地方,每次都在同一行。我有两个文件上传,一个是可选的(预览图像),另一个是强制性的(zip)。这甚至不像他们在预览中上传zip因为预览是先验证的,没有错误.....
- 然而,不同的下载类别确实会发生这种情况
- 它不能缓存,因为每个请求都将时间戳附加到提交URL
UPLOAD_ERR_NO_FILE
值:4;没有上传文件。(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 = ""
魔法吗?奇怪吗?可能不会,您的表单处理应该处理它。例如,重新显示表单,标记输入数据丢失/错误的地方,给出可访问的错误信息,并用提交的值填充所有表单字段,以便用户可以轻松地修复任何错误,并且不得完全重新填写表单或使用重置按钮清除整个表单。
您还可以使用客户端脚本镜像客户端上的错误处理,以便更快地为用户提供反馈,并且省去了为常见的用户输入错误往返服务器的时间。