我尝试使用pdf.js和node.js(fs通过browserify)将pdf加载到离线Chrome应用中。
我的问题是文件路径。我尝试使用以下代码进行简短测试:
var fs = require('browserify-fs');
fs.mkdir('/home', function() {
fs.writeFile('/home/hello-world.txt', 'Hello world!\n', function() {
fs.readFile('/home/hello-world.txt', 'utf-8', function(err, data) {
console.log(data);
});
});
});
它的行为与它应有的完全相同。在控制台上,我读了“Hello world!'”。 我的第一个问题:我有没有创建文件的任何想法?!?!我已经在我的硬盘上完成了搜索但无法找到 hello-world.txt 。 browserify-fs在哪里视为root?
其次,我尝试了另一项测试,使用了一些Chrome的I / O和node.js。
var fs = require('browserify-fs');
var path;
chrome.fileSystem.chooseEntry({'type': 'openFile'},
function( entry, fileEntries) {
chrome.fileSystem.getDisplayPath(entry, function(displayPath){
path = displayPath;
console.log(path);
fs.appendFile(path, 'data to append', function (err) {
if (err) throw err;
console.log('The "data to append" was appended to file!');
});
});
});
正如所料,Chrome会提示我选择一个文件。选择后,它会打印到控制台的正确文件路径(例如"~/Downloads/foo.txt"
)。但此时,fs.appendFile()
无法找到该位置。所以,我想,也许它需要从root开始的路径。所以我手动传递了'/home/chronos/user/Downloads/foo.txt'
,而fs.appendFile()
仍无法找到该文件。
所以,整个帖子是一个冗长的方式,询问节点的fs模块如何处理路径,以及当我使用browserify时根目录所在的位置。
感谢。
答案 0 :(得分:0)
您的第一个问题似乎是关于我不熟悉的browserfy-fs,而不是关于Chrome应用程序。您显示的代码不使用任何Chrome App API。
您的第二个问题显示了selectEntry为其回调提供FileEntry对象的代码,以及您需要使用适当的API(Google" FileEntry API" )。再次,将路径传递给browserfy-fs可能会或可能不会做任何有用的事情,但无论它做什么或不做什么都是browserfy-fs问题,而不是Chrome App问题。
您是否有理由尝试使用browserfy-fs在Chrome应用中执行文件I / O?