1

在我的插件中,我允许人们浏览到他们磁盘上的图像。当他们这样做时,返回的文件路径(使用内联选项文件控件)是C:\blah\blah\blah.png. 然后我使用这个文件路径并使用这个路径设置一个样式表: list-style-image: url("' + newValRep + '")

但是,我怎样才能以正确的方式将其转换为,file:////C:/blah/blah/blah.png因为如果我使用第一种方式,它在我的 css 样式表中不起作用。

目前我正在做这个正则表达式: var newValRep = 'file:///' + newuri.replace(/\\/g, '/');

但这绝对不是正确的方法,因为它是特定于 Windows 的。

我努力了:

  • new FileUtils.File(newuri).path但这并没有给出file:///形式
  • OS.Path.normalize(newuri)但同样的问题
  • Services.io.newURI(newuri, null, null).spec但同样的问题
4

2 回答 2

1

你是如此接近:-)

var uri = Services.io.newFileURI(somensILocalFile)
console.log(uri.spec)
于 2014-05-27T08:15:48.850 回答
0

供他人参考。

感谢@paa,我一直在使用OS.Path.toFileURI. 但是我需要 uir 的基本名称,并且OS.Path.basename对文件 uri 执行操作不会按预期返回。此文件 uri 的示例:file:///C:/Users/Vayeate/AppData/Roaming/Mozilla/Firefox/android_normal.png它将返回基本名称:/Users/Vayeate/AppData/Roaming/Mozilla/Firefox/android_normal.png

我想要android_normal.png. 所以我不得不做相反的事情,toFileURI并且 OS.File 附带了它,如下所示:http: //mxr.mozilla.org/mozilla-release/source/toolkit/components/osfile/modules/ospath_unix.jsm#162

有一个函数叫OS.Path.fromFileURI

成功OS.Path.basename(OS.Path.fromFileURI(path))返回android_normal.png

于 2014-10-11T09:20:25.517 回答