我知道出于安全原因,<input type="file">
在很大程度上不能被javascript操作,但是如果我有一个File对象,这是可能的吗?
我在页面上有一个拖动区域,我可以从中获取File对象。我不想使用xhr.sendAsBinary,我宁愿从一个普通的表单上传,目标设置为一个框架。
我试过做一些
var select = document.getElementById('upload_1');
select.files[0] = myFile;
myForm.submit();
有办法做到这一点吗?
2条答案
按热度按时间brtdzjyr1#
更新
看起来您想从
drop
事件中获取File
对象并将其分配给<input>
元素。很不幸,你不能这么做。只有用户可以选择文件;你不能动态地改变将要上传的文件,因为浏览器出于安全原因拒绝JavaScript这种能力。既然你说你有一个拖动区域,我假设你正在使用并瞄准一个支持拖放的浏览器。请注意,并不是所有的浏览器都支持拖放,所以我这里的示例仅限于这些浏览器。
通过拖放,您可以从drop事件中获取
File
对象,并且不需要input
元素。请注意,这不是100%的浏览器兼容。某些浏览器不支持通过
XMLHttpRequest()
上传文件。如果你想支持这些浏览器,那么你必须做一些不同的事情。最后,我的示例没有考虑使用表单。如果你想要一个基于表单的方法,请让我知道。我也可以帮你:)
如果你有任何问题请告诉我。
2ul0zpep2#
是的,这是可能的:
从blob加载文件:
要从其他文件输入加载文件,请执行以下操作:
https://jsfiddle.net/Kartearis/gmhwnaz6/3/