javascript - 在表单中使用 onsubmit 而不是 onchange 时无法获取图像
问题描述
我想上传一张图片,我的代码设置为当我打开图片时它会立即发送一个 XMLHttpRequest 并上传图片。
现在我需要改变它并使用一个额外的按钮来submit
代替。但是,一旦我这样做,图像似乎不再正确加载。
这是表格:
<form id="profileImgForm">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Finalize Upload">
</form>
这是有效的JavaScript,使用onchange
方法:
var imgfile = "";
document.getElementById("profileImgForm").onchange = function(e) {
e.preventDefault();
if(e.target.files.length > 0) {
imgfile = e.target.files[0];
}
}
这行得通,但我需要它做的是对onsubmit
. 但是,如果我将其更改onsubmit
为不再找到图像文件。
我在输入中打开图像,fileToUpload
然后单击提交按钮。但是现在我收到类似的错误cannot read property 'length' of undefined
,这意味着由于某种原因无法找到图像文件。
为什么这在使用时不再起作用onsubmit
,我如何获取图像文件?
解决方案
对于 onchange,e.target 是文件输入元素,但对于 onsubmit,e.target 是整个表单。您可以e.target[0].files[0]
通过其 id 使用或获取文件输入元素。
推荐阅读
- java - 无法访问 API 端点
- java - IntelliJ - 如何调试通过应用程序中创建的集成 Jetty 服务器实例运行的 JSP?
- python - 以“a”开头,以“a”结尾的首都。字母“a”是大写还是小写都没关系
- javascript - 反应查询获取旧数据
- r - 在 linux RStudio 控制台中打印时,skimr(iris) 在 check_dots_used 中生成错误
- c# - C# 中带有下拉列表的可编辑列中的 GridView
- azure - TfsTeamSettingsProcessor 失败并显示“您尚未设置团队字段”
- excel - Excel在选定单元格快捷选项下方选择多个单元格
- r - 如何在子数据集中完成重复计算和绘图?
- regex - 您如何在 PHP 中使用正则表达式编写以下字符串?.. 和 /.. 和 ..anyalphanumeric0