在我的网页中,我有一个指向本地驱动器文件夹的文件链接。如:
<a href="D:\folder\file.txt">file.txt</a>
<a href="D:\folder>folder</a>
通常情况下,无法从Web浏览器打开文件夹。所以,我认为我可以通过Firefox扩展来实现它,因为我在工作中使用Firefox。
答案 0 :(得分:3)
要打开文件夹,您可以使用功能:
function openDir(val)
{
if (val == "")
{
alert("Directory not defined");
return;
}
if(navigator.userAgent.indexOf("Firefox") == -1)
{
alert("Currently active folder links supported only for Mozilla Firefox web browser");
return;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var localFile =
Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
var env =
Components.classes["@mozilla.org/process/environment;1"]
.createInstance(Components.interfaces.nsIEnvironment);
var systemRoot = env.get("SystemRoot");
if (systemRoot == "")
{
alert("Unable to retrieve SystemRoot environment variable");
}
localFile.initWithPath(systemRoot + "\\explorer.exe");
var process =
Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
process.init(localFile);
process.run(false, Array(val), 1);
}
文件读取方法在nhnb answer中显示,write方法如下:
// Returns null if it can't do it, false if there's an error, true if it saved OK
function mozillaSaveFile(filePath,content)
{
if(window.Components) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filePath);
if(!file.exists())
file.create(0,0664);
var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
out.init(file,0x20|0x02,00004,null);
out.write(content,content.length);
out.flush();
out.close();
return true;
} catch(ex) {
return false;
}
}
return null;
}
答案 1 :(得分:0)
链接应如下所示:
file:///d:/folder/file.txt
扩展程序LocalLink将允许您打开此类链接。关于MozillaZine的替代品和安全风险的讨论:Links to local pages do not work。
答案 2 :(得分:0)
此外,Firefox的Launchy扩展程序非常好。