【问题标题】:When using webkitRelativePath is the path separator operating system specific?使用 webkitRelativePath 时,路径分隔符是操作系统特定的吗?
【发布时间】:2020-07-14 04:28:56
【问题描述】:

我正在尝试在浏览器支持有限的情况下实现目录上传功能(即基于 Chrome 或 Chromium 的浏览器)。为此,我使用了带有webkitdirectory 属性的HTMLInput 元素。我需要知道的是所选File 对象的webkitRelativePath 属性中的目录分隔符是否使用操作系统特定的目录分隔符。根据this W3C draft,它看起来总是被指定为unix风格的分隔符,但最好能确认这一点(如果可能的话,FireFox也是如此)。不幸的是,MDN documentation 没有指定。

这是一个演示功能的 sn-p:

var dirInput = document.getElementById('dirInputTest');
var output = document.getElementById('dirListing');
dirInput.addEventListener(
  'change',
  function () {
    var files = Array.from(dirInput.files);
    output.innerHTML = '';
    for (var i = 0; i < files.length; i++) {
      output.innerHTML += files[i].webkitRelativePath + '\n';
    }
  }
);
<body>
<input id="dirInputTest" type="file" webkitdirectory />
<pre id="dirListing">
</pre>
</body>

【问题讨论】:

  • 嗯...这就是当前规范文本所要求的,因此,如果您只对遵循这些规范的实现感兴趣,您可以确定“相对路径是由一个组成的字符串或多个由 '/' (U+002F SOLIDUS) 连接的不以 '/' (U+002F SOLIDUS) 开头的路径段。执行。另外,只是为了好奇,你愿意用这些路径做什么?
  • 这是一个上传功能,可以保留上传文件夹的目录结构。所以我必须在上传文件之前将平面文件列表变成树结构来创建相应的容器。

标签: javascript html


【解决方案1】:

所以我开始启动 Windows 虚拟机,我可以确认所有主要浏览器(Chrome、Fire-Fox、Edge)都使用正斜杠路径分隔符,无论操作系统如何(我没有测试 Opera 或 Internet探险家)。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多