在表单中使用 onsubmit 而不是 onchange 时无法获取图像
Cannot get image when using onsubmit in form instead of 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 获取文件输入元素。
我想上传图片,我的代码已设置为当我打开图片时它会立即发送 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 获取文件输入元素。