1

我正在尝试在元素上使用新的 multiple="multiple" 属性。到目前为止,最近的 Gecko 和 WebKit 浏览器都支持这一点。我正在 Firefox 3.6 和 Chrome 5.0 上进行测试。

我可以很好地使用它,并显示文件列表(我以此为指导)。然而,令人沮丧的是,用户似乎不可能在添加文件后从该列表中删除文件。唯一的方法是单击“浏览...”按钮并选择一组新文件。

这是因为<input>元素提供的 FileList 对象是只读的,如规范中所述(无法链接 - 请参阅 W3C 网站上的 FileAPI TR)。

当然有解决方法,例如保留“已删除”项目的列表,无论如何上传所有内容,然后忽略“已删除”项目。这有点脏,如果“删除”大量文件,可能会使上传速度慢得令人无法接受。

有谁知道任何其他解决方法,或者有更好的想法如何处理这个问题?目的是能够使用“多个”属性,并允许用户在上传之前从列表中删除文件。

4

1 回答 1

0

我从 File API 的编辑 Arun Ranganathan 那里得到了答案:

程序员(使用文件 API 以编程方式操作用户的文件选择)不能违背用户的决定。因此 API 不允许程序员将文件添加到用户的选择中或 从用户的选择中删除文件。如果我们允许这样做,这将是一个巨大的安全漏洞。糟糕的网站可能会做非常糟糕的事情,或者至少是非常烦人的事情。这就是为什么当前范例不允许与至少通过“文件”对话框(当前由输入类型=“文件”产生)未经用户批准的底层文件系统进行任何交互。

我同意 FileList 应该反映用户最初在文件选择器中选择的内容,并且能够将内容添加到 FileList 将是一个巨大的安全漏洞。我看不出能够删除东西会导致如此巨大的安全问题,但我可以看到它如何被用于不太积极的目的。

于 2010-10-26T18:31:29.973 回答