我有本地文件路径(在node.js中),我需要将它们转换为file://
网址。
我现在正在查看https://en.wikipedia.org/wiki/File_URI_scheme,我觉得这必须是一个已解决的问题,并且有人必须有一个片段或npm模块来执行此操作。
但是后来我尝试搜索npm这个但是我得到了太多的瑕疵它不好笑(文件,网址和路径都是像每个包一样的搜索命中率:)与google和SO相同。
我可以做这种天真的方法
site = path.resolve(site);
if (path.sep === '\\') {
site = site.split(path.sep).join('/');
}
if (!/^file:\/\//g.test(site)) {
site = 'file:///' + site;
}
但我很确定这不是可行的方法。
答案 0 :(得分:18)
npm install --save file-url
用法:
var fileUrl = require('file-url');
fileUrl('unicorn.jpg');
//=> file:///Users/sindresorhus/dev/file-url/unicorn.jpg
fileUrl('/Users/pony/pics/unicorn.jpg');
//=> file:///Users/pony/pics/unicorn.jpg
也适用于Windows。代码很简单,以防你想要一个片段:
var path = require('path');
function fileUrl(str) {
if (typeof str !== 'string') {
throw new Error('Expected a string');
}
var pathName = path.resolve(str).replace(/\\/g, '/');
// Windows drive letter must be prefixed with a slash
if (pathName[0] !== '/') {
pathName = '/' + pathName;
}
return encodeURI('file://' + pathName);
};
答案 1 :(得分:7)
Node.js v10.12.0仅提供了两种新方法来解决此问题:
const url = require('url');
url.fileURLToPath(url)
url.pathToFileURL(path)
答案 2 :(得分:1)
我有一个类似的issue,但最终解决方案是使用新的desired_elements = []
linkerHref_list = response.css('body').xpath("//*[@href]")
for link in linkerHref_list :
test = link.get_attribute("href")
desired_elements.append(test)
实现:
WHATWG URL