我试图在元素上使用新的multiple =“ multiple”属性。到目前为止,最新的Gecko和WebKit浏览器都支持此功能。我正在Firefox 3.6和Chrome 5.0上进行测试。

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

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

当然,有一些解决方法,例如保留“已删除”项目的列表,始终上传所有内容,然后忽略“已删除”项目。这有点脏,并且如果“删除”了许多文件,可能会使上传速度减慢,这是令人无法接受的。

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

最佳答案

我从File API的编辑器Arun Ranganathan得到了一个答案:


  程序员(使用File API
  以编程方式操纵用户的
  文件选择)不能违反
  用户的决定。因此,API不会
  允许程序员添加一个
  归档到用户的选择或
  从用户的选择中删除文件。如果我们允许这个
  将会是一个巨大的安全漏洞。坏
  网站可能会做的非常不好
  事情或至少很烦人
  东西这就是为什么目前
  范式不允许任何
  与基础文件的交互
  未经用户批准的系统
  至少通过“文件”对话框
  (当前通过输入生成
  类型=“ file”)。


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

关于javascript - 在Gecko/WebKit中多次上传:允许在上传之前从列表中删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3112281/

10-09 08:31
查看更多