将URI转换为文件URI(文件:////)

时间:2014-05-26 23:55:34

标签: firefox-addon file-uri

在我的插件中,我允许用户浏览磁盘上的图像。执行此操作时,返回的文件路径(使用内联选项文件控件)的格式为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但同样的问题

2 个答案:

答案 0 :(得分:1)

你是如此亲密: - )

var uri = Services.io.newFileURI(somensILocalFile)
console.log(uri.spec)

答案 1 :(得分: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