如何在node.js中安全地将本地文件path转换为文件::?/ url?

我有本地文件path(在node.js中),我需要将它们转换成file:// url。

我现在正在看https://en.wikipedia.org/wiki/File_URI_scheme ,我觉得这一定是一个解决的问题,有人必须有一个片段或NPM模块来做到这一点。

但是,然后我尝试searchnpm这个,但我得到这么多cruft它并不好笑(文件,url和path是像每个包一样的search命中:)与谷歌和SO一样。

我可以做这个天真的做法

site = path.resolve(site); if (path.sep === '\\') { site = site.split(path.sep).join('/'); } if (!/^file:\/\//g.test(site)) { site = 'file:///' + site; } 

但我很确定这不是要走的路。

使用file-url模块 。

 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); };