动态设置文件输入的值

时间:2009-06-19 10:00:09

标签: javascript html dom google-gears

有没有办法设置文件输入的值(<input type="file" />)还是全部被阻止以确保安全性?我正在尝试使用谷歌齿轮的openFiles来制作一个简单的多上传器。

  

注意:

     

下面的答案反映了2009年旧版浏览器的状态。现在,您可以在2017年使用JavaScript动态/编程地设置文件输入元素的值。

     

有关详细信息和演示,请参阅此问题的答案:
How to set file input value programatically (i.e.: when drag-dropping files)?

4 个答案:

答案 0 :(得分:66)

无法动态更改文件字段的值,否则您可以将其设置为“c:\ yourfile”并轻松窃取文件。

然而,多上传系统有很多解决方案。我猜你想要一个多选择的打开对话框。

或许看一下http://www.plupload.com/ - 这是一个非常灵活的多文件上传解决方案,并且支持drop zone e.t.c。

答案 1 :(得分:2)

我正在开发一个角度js应用程序,并且遇到了类似的问题。我所做的是显示数据库中的图像,然后创建一个按钮来删除或保留当前图像。如果用户决定保留当前图像,我将ng-submit属性更改为另一个不需要图像验证的功能,并更新数据库中的记录而不触及原始图像路径名。删除图像功能还将ng-submit属性值更改回提交表单的功能,并包括图像验证和上传。还有一些javascript可以滑入视图以上传新图像。

答案 2 :(得分:0)

我有类似的问题,然后我尝试用JavaScript编写它,它的工作原理! :referenceToYourInputFile.value = "" ;

答案 3 :(得分:0)

我最终为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;