如何获取node webkit应用程序中目录(不是当前工作目录)的绝对路径?
示例(Mac OS) - 我在A
中创建了一个名为Documents
的文件夹。当我使用文件系统目录条目getDirectory
时,我只能获得返回dir.fullPath
的{{1}}
A
但我需要:app.workspace.getDirectory(self.folderpath, {}, function(dir){
if(dir) console.log('Dir: ', dir);
});
|| ~/Documents/A/
在我的应用中,用户可以选择/创建他们想要的目录,并存储/读取该文件夹中的数据。
绝对路径可能不是我需要的,但我想用默认桌面应用程序打开文件(PDF,doc ...):
c:\Users\Username\Documents
答案 0 :(得分:2)
出于安全原因,您无法从网页访问系统目录文件的绝对路径。即使您尝试从javascript脚本(例如)访问特定文件目录,浏览器也会立即阻止您。
可能对您有用的解决方案是使用简单的<input type="file">
检索用户想要打开的文件,以便用户可以选择文件而不向您提供其绝对路径;之后您可以将文件保存到服务器主机,甚至是项目的本地目录,然后使用远程路径使用exec命令将其打开。
答案 1 :(得分:1)
不确定我是否明白这个问题。您可以使用__dirname来获取正在执行的脚本的目录。请参阅:https://nodejs.org/docs/latest/api/globals.html#globals_dirname
从那里你可以使用相对路径来引用其他文件和文件夹。
示例文件夹结构:
/home/filippo/works/test/
├── subfolder
│ └── index.js
└── test.js
子文件夹/ index.js:
module.exports = {'folder': __dirname};
test.js:
var m = require("./subfolder/");
console.log("test.js running in: ", __dirname);
console.log("m module running in: ", m.folder);
运行测试:
$ node test.js
test.js running in: /home/filippo/works/test
m module running in: /home/filippo/works/test/subfolder
这是你在找什么?
答案 2 :(得分:0)
实际上我最近发现了(我不敢相信我错过了它,但是),使用chrome文件系统,你可以获得“更具可读性”的路径信息用于显示目的。
根据您的目的,您可能无法访问绝对位置,但至少可以看到它是什么......
fileSystem.getDirectory(path, {}, function(dir){
if(dir) console.log('This should return full path: ', dir.getDisplayPath());
var fullpath = dir.getDisplayPath();
//now with this, I can open any file I want via child process :)
var child = exec(getCommandLine() + ' ' + fullpath, function (error, stdout, stderr)
//.......
});
有关Chrome文件系统的更多信息here。