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



我想有一个上传表单,一旦用户选择了一个文件就自动提交。这个问题已经被问过很多次了。如果我正确理解了其他线程,这应该可以工作:

<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");
}
?> 

当我选择一个文件时,我看到的是文件名提示,而不是"没有文件选择"。但是$_FILES没有设置。

  • onchange="form.submit()"替换为onchange="alert('test');"会在选择文件后出现预期的警告框。(从这里的想法:https://stackoverflow.com/a/1904189/11826257)
  • 我还尝试了一个额外的JavaScript函数,如下所述:https://stackoverflow.com/a/12275917/11826257。

现代浏览器会阻止onchange="form.submit()"type="file"吗?
我尝试了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"/>

相关内容

最新更新