67

有没有办法设置文件输入(<input type="file" />)的值,还是为了安全而被阻止?我正在尝试使用 google gears 的 openFiles 来制作一个简单的多上传器。

笔记:

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

有关详细信息以及演示,请参阅此问题中的答案:
如何以编程方式设置文件输入值(即:拖放文件时)?

4

4 回答 4

67

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

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

也许看看http://www.plupload.com/ - 这是一个非常灵活的多文件上传解决方案,并且支持拖放区等

于 2009-06-19T10:04:48.663 回答
2

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

于 2016-01-19T08:01:55.433 回答
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;
于 2016-07-06T16:10:25.133 回答
-1

我有类似的问题,然后我尝试用 JavaScript 编写它并且它有效!:referenceToYourInputFile.value = "" ;

于 2015-03-18T05:14:10.290 回答