有没有办法设置文件输入(<input type="file" />
)的值,还是为了安全而被阻止?我正在尝试使用 google gears 的 openFiles 来制作一个简单的多上传器。
笔记:
下面的答案反映了 2009 年旧版浏览器的状态。现在,您实际上可以在 2017 年使用 JavaScript 动态/编程地设置文件输入元素的值。
有关详细信息以及演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?
有没有办法设置文件输入(<input type="file" />
)的值,还是为了安全而被阻止?我正在尝试使用 google gears 的 openFiles 来制作一个简单的多上传器。
笔记:
下面的答案反映了 2009 年旧版浏览器的状态。现在,您实际上可以在 2017 年使用 JavaScript 动态/编程地设置文件输入元素的值。
有关详细信息以及演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?
无法动态更改文件字段的值,否则您可以将其设置为“c:\yourfile”并很容易窃取文件。
然而,多上传系统有很多解决方案。我猜你想要一个多选打开对话框。
也许看看http://www.plupload.com/ - 这是一个非常灵活的多文件上传解决方案,并且支持拖放区等
我正在开发一个有角度的 js 应用程序,并且遇到了类似的问题。我所做的是显示数据库中的图像,然后创建一个按钮来删除或保留当前图像。如果用户决定保留当前图像,我将 ng-submit 属性更改为另一个不需要图像验证的函数,并在不触及原始图像路径名称的情况下更新数据库中的记录。删除图像功能还将 ng-submit 属性值更改回提交表单并包括图像验证和上传的功能。还有一些 javascript 可以滑动到视图中以上传新图像。
我最终为 AngularJS 做了这样的事情,以防有人偶然发现这个问题:
const imageElem = angular.element('#awardImg');
if (imageElem[0].files[0])
vm.award.imageElem = imageElem;
vm.award.image = imageElem[0].files[0];
进而:
if (vm.award.imageElem)
$('#awardImg').replaceWith(vm.award.imageElem);
delete vm.award.imageElem;
我有类似的问题,然后我尝试用 JavaScript 编写它并且它有效!:referenceToYourInputFile.value = "" ;