动态设置文件输入的值

IT技术 javascript html dom google-gears
2021-02-01 01:56:03

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

笔记:

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

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

4个回答

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

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

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

有人用有效的 URL 替换了 URL。
2021-04-04 01:56:03
我认为这个答案已经过时了。不再可能设置默认文件,因为它可以通过 FileReader API 读取并由 XHR 发送。input.files只读的事实可能是遗留问题。
2021-04-07 01:56:03
考虑到问题是“有没有办法设置文件输入的值”?答案是“这是不可能的”.. 仍然完全有效的答案不是吗?它与 FileReader API 或 XHR 有什么关系?
2021-04-07 01:56:03

我正在开发一个有角度的 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 = "" ;

这以什么方式“工作”?Mozilla的文件明确指出,“你不能设置从脚本文件选择器的value;做这样[这]东西不起作用”
2021-03-24 01:56:03
问题是关于设置文件输入的值,而不是清除它。
2021-03-25 01:56:03
...除了清除文件选择。
2021-03-29 01:56:03