如何让用户使用 javascript 在其本地计算机上选择一个文件夹(而不是文件)
How can I have a user select a folder (not a file) on their local machine using javascript?
我有一个基于 Web 的应用程序,我需要能够从中弹出"文件打开"对话框并让用户选择一个文件夹,然后将其路径填充到 HTML 表单字段中,以便用户不必键入它。
不上传任何文件或文件夹,仅上传路径信息。
客户端平台/环境是带有 Internet Explorer 11 的 Windows 7,或者可选的 OS X 上的 Safari(最新版本)。它不能使用Java,Flash或任何其他必须下载和安装的插件 - 只能使用默认情况下安装在这些平台上的插件,例如Windows上的ActiveX。
我发现这段代码几乎可以满足我的需要 - 但我无法弄清楚如何允许它选择一个文件夹而不仅仅是一个非文件夹文件:
<html>
<head>
<script type="text/javascript" language="JavaScript">
if (typeof String.prototype.startsWith != 'function') {
// see below for better implementation!
String.prototype.startsWith = function (str){
return this.indexOf(str) == 0;
};
}
function getUNCPath() {
var fileName = document.getElementById("uploadedFile").value;
var WshNetwork = new ActiveXObject("WScript.Network");
var Drives = WshNetwork.EnumNetworkDrives();
for (i = 0; i < Drives.length; i += 2) {
if (fileName.startsWith(Drives.Item(i))) {
var fullPath = fileName.replace(Drives.Item(i), Drives.Item(i + 1));
alert(fullPath);
break;
}
}
}
</script>
</head>
<body>
<form onsubmit="getUNCPath()">
<input type="file" id="uploadedFile"/>
<input type="submit" value="Get the UNC Path!" />
</form>
<span id="uncPath"></span>
</body>
</html>
我假设我需要使用文件 API,但我的 Google-fu 无法找到一种通过文件 API 单独检索文件夹名称的方法。
出于安全原因,您无法执行此操作,某些浏览器甚至会为您提供虚假的目录信息。浏览器不允许您使用 javascript 访问和浏览客户端计算机的文件系统。
文件 API 对此进行验证
文件的名称;在获取时,它必须返回 文件作为字符串。不同的文件名有许多变体 系统;这只是文件的名称,没有路径 信息。在获取时,如果用户代理无法提供此信息 可用,它们必须返回空字符串。
相关文章:
- 从a-z中随机选择一个字母
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- 在下拉列表中选择一个选项的值
- 在类JavaScript选择的另一个元素中选择一个标记元素
- Jquery:当两个或多个条件为true时,选择一个元素
- 可以使用createRange选择一个空范围
- 选择一个元素,使其最近的具有特殊属性的父元素具有特殊值
- 使用 Jquery 选择一个 td 元素
- 当使用jQuery/Javascript选择一个多选时,如何使所有值都不被选中:
- 在一组复选框中,一次只允许选择一个
- 如何强制用户从下拉列表和按钮中选择一个值以启用保存按钮
- 从数组中选择一个变量
- 正在读取<p: 选择一个菜单/>在onchange回调中
- 在输入字段中选择一个值,然后用相应的数据填充另一个字段
- 如何以编程方式在 jsTree 中选择一个节点并打开所有父节点
- Asp.net 引导下拉菜单 - 选择一个项目
- 如何根据 jsp 中数据库中的值在下拉列表中选择一个值
- 通过硒选择一个javascript下拉列表
- 选择一个从 mysql 返回选中/未选中复选框的对象
- 如何在 PHP 中使用 OnChange 事件的下拉列表中选择一个选项后,对大量数据行设置分页