1

笔记:

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

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

我有2个input type="file"

<input type="file" id="attach_file_1" name="attach_file_1" />
<input type="file" id="attach_file_2" name="attach_file_2" />

在“选择”文件之后attach_file_1,是否可以为attach_file_2使用 javascript 设置相同的值?

4

4 回答 4

10

我不认为你可以。我相信这是一个安全问题。您不能设置文件输入类型的值。否则,您可以隐藏文件输入元素并在用户不知情的情况下将文件上传到您的服务器。

于 2013-05-28T13:58:58.030 回答
2

实现所需功能的一种方法是在表单中添加一个标志,并在您要将文件信息复制到第二个输入时将其标记为真。然后,在服务器上,您可以检查该标志并使用第一个输入中的文件来执行您希望对第二个输入执行的任何操作。

于 2013-05-28T14:09:24.463 回答
1

.cloneNode()鉴于您想要另一个具有相同值的输入,至少在 Firefox中似乎可以使用。到目前为止,Chrome 的行为有所不同。

http://jsbin.com/ohafom/2/

另请注意,我还没有实际测试上传。据我所知,Firefox 只会发送一个。克隆工作仍然很有趣。

于 2013-05-28T14:10:16.623 回答
0

我能想出实现这一点的唯一方法(但只能将文件从一个“传递”到另一个)是动态切换输入字段的位置和名称,以便文件看起来像是从一个传递到另一个。

否则,这是安全问题,大多数浏览器根本不允许您操作文件输入。

于 2013-05-28T14:27:28.703 回答