在 chrome 中将文件系统位置解析为可用的 file:// 网址

Parsing filesystem locations into usable file:// urls in chrome

本文关键字:网址 file chrome 文件系统 位置      更新时间:2023-09-26

我正在将文件保存到chrome扩展程序中的用户硬盘驱动器,我需要一种方法以编程方式在chrome浏览器中打开文件。我可以使用 chrome 选项卡 API 创建一个选项卡并设置其 url。问题是文件的文件系统地址。

Chrome 会将文件名中的特殊字符切换为其他表达式,例如空格变为 %20。

为了解决这个问题,我想在保存文件名之前解析文件名,删除会导致这些 url 损坏的字符。

我无法弄清楚正则表达式来正确解析文件名。

有两件事可以帮助我:

  1. 在 Chrome 中打开网址时导致网址出现这些损坏的所有特殊字符的列表。

  2. 或者更好的是,来自正则表达式帮助的即时解决方案,我可以与 javascript 的 replace 方法一起使用,将每个"/"替换为"''",以及将不是字母或数字(或我刚刚添加的"''")的所有其他字符替换为"_"

编辑:

如果我不考虑对字符串的这些更改,我将无法在 chrome 选项卡中打开该文件。例如,下面的代码将不起作用。

chrome.browserAction.onClicked.addListener( function(tab) {
  chrome.tabs.create({ url: 'file:///home/user/1057_AngularJS: Developer Guide: Directives.mhtml'}, function(tab) {
  });
});

我需要做的是:

chrome.browserAction.onClicked.addListener( function(tab) {
  chrome.tabs.create({ url: 'file:///home/user/1057%5CAngularJS:%20Developer%20Guide:%20Directives.mhtml'}, function(tab) {
  });
});`

我想用 ''s 替换/s,以便文件系统 url 尽可能类似于网页 url,但如果这导致问题,我可以放弃它。

来自正则表达式帮助的即时解决方案,我可以与之一起使用 JavaScript 的 replace 方法,将每个 "/" 替换为 "''",并且每个 其他不是字母或数字的字符(或 I 的"''" 刚刚添加)带有"_"

给你:

'Hello/你 好/1337'.replace(/'//g, '''').replace(/[^a-zA-Z0-9'']/g, '_');

输出:

'Hello'___'1337'

我最终使用了.replace(/[^a-zA-Z0-9'.]/g, '_'),或者没有用''替换/,因为''也被编码为特殊字符。我还想在文件名中保留句点。要查看已编码字符的完整列表,请转到此处。