现代浏览器是否支持 onchange="this.form.submit()" 进行文件上传?

Do modern browsers support onchange="this.form.submit()" for file upload?

我想要一个在用户 select 编辑文件后立即自动提交的上传表单。
这个问题之前已经被问过很多次了。如果我正确理解其他线程,这应该有效:

<form method="post" enctype="multipart/form-data">
  <input id="fileToUpload" onchange="form.submit()" type="file"/>
</form>

<?php 
  if(isset($_FILES["fileToUpload"])){
    echo "You successfully entered a file for the upload!";
    // move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "uploads/my_image.png");
  }
?> 

当我 select 文件时,我看到文件名闪烁而不是“未选择文件”。但是 $_FILES 没有设置。

现代浏览器是否会针对 type="file" 阻止 onchange="form.submit()"
我在 Firefox 68 和 Microsoft Edge 84 上试过了。

要允许 $_FILES 检测您上传的文件,您需要在输入标签中添加 name 属性。所以改变

<input id="fileToUpload" onchange="form.submit()" type="file"/>

<input id="fileToUpload" name="fileToUpload" onchange="form.submit()" type="file"/>

表单 id 默认不提交值。只有 name 个值。尝试将输入标签中的 id 更改为 name,例如:

<input name="fileToUpload" onchange="form.submit()" type="file"/>