【问题标题】:setting an input control's Filelist to a previously selected Filelist将输入控件的 Filelist 设置为先前选择的 Filelist
【发布时间】:2017-08-01 22:56:54
【问题描述】:

在我的网络应用中,用户通过输入 type='file' 选择本地图像。该应用程序有多个“画笔”,对于每个画笔,用户可以选择一组不同的本地图像用作画笔的“绘画”。如果可能的话,我想只使用一个输入 type='file' 并且,当给定的画笔 X 是可编辑画笔(一次只有一个画笔是可编辑的)时,我想刷新输入以便它的 Filelist是可编辑画笔的文件列表,而不仅仅是最近选择的一堆文件。我希望这是不可能的。对吗?

【问题讨论】:

  • 你能定义“可编辑画笔的文件列表”吗?就像您想限制一个人可以从中上传文件的文件夹?
  • 每个画笔可能有不同的文件列表。输入将用于生成几个不同的文件列表;每个刷子一个。假设画笔 x 当前是可编辑画笔(一次只能编辑一个画笔)。假设用户选择 Filelist X。然后用户将画笔 y 设为可编辑画笔并选择 Filelist Y。然后用户将 x 设为可编辑画笔。我希望能够将输入的文件列表设置为 X。问题是这是否可能。

标签: javascript html input filelist


【解决方案1】:

您将无法以编程方式在输入控件上设置 FileList,因为这意味着您可以读取(或重新上传)用户未手动选择的文件(安全风险。)

也许你可以做的是在“我只想使用一个输入类型='file'”部分上妥协。您可以有一个输入 type='file' 元素的数组,然后根据选择的画笔显示/隐藏它们。这会产生在 UI 中显示不同的选定文件列表的错觉。

【讨论】:

  • 谢谢,乔丹。是的,我希望这是我必须做的。
  • 但是,我认为我应该能够将输入设置为先前有效选择的文件列表。我不是要读取用户未手动选择的文件。在这些问题上,婴儿似乎总是被洗澡水扔出去。即使是没有风险的场景也会被禁止。
  • @JimAndrews 我不深入了解 File/FileList API,但可能存在临时 安全风险以允许您提出建议。通过选择一些文件,用户表示“我授予您的网络应用程序现在读取这些文件内容的权限。”如果将来文件发生更改,则 Web 应用程序不应有权查看其新内容。允许您设置输入元素的 FileList 意味着您可以触发重新上传;但是既然你不能重新上传,为什么还要设置 FileList 呢?听起来只是为了让列表可见。
  • @JimAndrews ...因此,允许它可能不是实际的安全风险,而是一种感知风险,以及程序员认为 API 允许他们做某事的风险(重新上传相同的文件),他们实际上不能这样做。
  • 顺便说一句,我什至不想上传文件,更别提重新上传了。但是,在网络技术中处理“安全风险”的方式,我们最终会得到有利于应用程序开发而不是网络应用程序开发的瘫痪控制,并且限制超出了合法风险,禁止无辜但非常有用的功能。
【解决方案2】:

这是不可能的,因为能够设置默认目录存在安全风险。您不希望网站访问您的文件系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2015-03-28
    • 2013-06-01
    相关资源
    最近更新 更多