现代浏览器是否支持 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 没有设置。
- 将
onchange="form.submit()"
替换为 onchange="alert('test');"
会在文件 selection 之后出现预期的警告框。 (想法来自这里:)
- 我还尝试了一个额外的 JavaScript 函数,如下所述:。那也没用。
现代浏览器是否会针对 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"/>
我想要一个在用户 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 没有设置。
- 将
onchange="form.submit()"
替换为onchange="alert('test');"
会在文件 selection 之后出现预期的警告框。 (想法来自这里:) - 我还尝试了一个额外的 JavaScript 函数,如下所述:。那也没用。
现代浏览器是否会针对 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"/>