控制 <input type="file"> 的工作目录?

IT技术 javascript internet-explorer
2021-03-19 13:15:41

全文:我正在为我的公司开展一个项目,该项目要求我们每个地点的用户上传由第三方软件生成的报告。此软件生成的所有报告始终放置在同一目录中。我们的一些不太懂计算机的员工,根据过去(和正在进行的)类似艰巨任务的经验判断:从供应商网站下载/保存发票到特定目录,将难以找到正确的目录来上传。

每个位置的计算机都运行 Windows Server 2003 并且当前具有 IE6

我们希望通过将文件输入设置为默认指向正确的目录来提高易用性和合规性。

我最初希望能够直接在输入值中设置文件,但这是有充分理由在大多数浏览器中禁用的。是否可以通过 javascript 或仅在 HTML 本身中控制用户按下浏览按钮时打开的目录?

如果没有,还有什么其他关于如何完成它的建议?甚至像在桌面上成功设置快捷方式这样简单的方法也可以强制浏览器使用所需的工作目录。(IE 显然忽略了快捷方式的“开始”参数)

6个回答

出于安全原因,您无法使用 JavaScript 控制文件输入的内容。否则,您可以创建一个带有文件输入字段的隐藏表单,将其设置为路径,然后使用 JavaScript 提交表单,以便在用户不知情的情况下将文件上传到您的服务器。

不幸的是,我不知道设置文件选择器默认路径的方法。如果有,我确定它将是特定于浏览器的,并且只能通过在客户端设置一些选项来使用,而不是通过 HTML 或 JavaScript。

一个快速的谷歌搜索结果是 JUpload——一个开源签名的 Java 小程序,它似乎可以满足您的所有需求:http : //jupload.sourceforge.net/

演示站点:http : //jupload.sourceforge.net/advanced_js_demo.html

我敢肯定还有许多其他这样的 Java 小程序,而且推出自己的小程序可能不会太难。

我能想到的唯一其他选择是桌面上传应用程序。

Flash 上传控件也不会削减它,它们遵循与基本 HTML 相同的安全规则——仅文件名和扩展名。您对 Java 足迹的看法是正确的,但我对使用 ActiveX 控件和/或注册表黑客同样犹豫不决。说我有偏见,我想,但我会选择独立于操作系统/浏览器的 Java 和在 IE 上运行的 ActiveX 控件:P
2021-05-05 13:15:41
java 有点侵入性,你不觉得吗?在必须安装一个 100MB+ 的运行时会消耗原生资源等之前,我会选择许多 Activex 控件和 Flash 上传控件。
2021-05-16 13:15:41

IE 使用为文件上传选择的最后一个文件夹。如果您可以控制客户端计算机,我的建议是;将驱动器号映射到文件所在的文件夹。这可以通过使用自动加载调用 subst 中的 cmd 文件来轻松完成。然后指导用户手动输入驱动器号,因为它很短,应该可以写一个非常清晰易懂的说明。祝你好运。

简单地说,不可能做任何这样的事情。如您所见,所有/大多数答案都同意此陈述,以及那些没有误解该问题的答案。抱歉,大多数浏览器都认为您尝试执行的操作存在安全风险。

您不能设置输入文件的值,这是一个安全问题。

您可以使用 activex 控件,尽管这些东西已经过时了。有许多高级文件上传 Activex 控件,我敢打赌您可以非常便宜地挑选一个。

下载目录的注册表设置可能会起作用:(即使它是上传)并且每次打开 IE 时您都必须弄清楚如何设置它

HKCU\Software\Microsoft\Internet Explorer\DownloadDirectory