0

我正在尝试从文本文件中的字符串(文件名)加载图像文件:

var thisItem = ITEM_COLLECTION_FILE_NAME;
var rs = fs.createReadStream(path.resolve(thisItem));

rs.on("data", function(data) {
if (data) {
lines += data;
}
});

但是,当页面加载时,我收到此错误:

Not allowed to load local resource

在这样的论坛上:http ://www.sencha.com/forum/showthread.php?200512-Not-allowed-to-load-local-resource我发现建议说我应该通过 HTTP 提供文件目录。问题是,我的整个应用程序都是基于 Express 构建的,所以它已经在使用 http 来提供文件。关于我在这里做错了什么的任何想法?

4

1 回答 1

2

您的问题与Same origin policy相关。如果您使用的是 express,您可以执行以下操作:

app.get('/img', function(req, res){
try{
    var full_path = /full/path/to/your/local/file

    fs.exists(full_path, function(exists){
        if(!exists){
            res.render('404.jade', {});
        }else{
            fs.readFile(full_path, "binary", function(err, file) {
                    res.writeHeader(200);  
                    res.write(file, "binary"); 
                    res.end();
            });
        }
    });
}catch (err){
    res.render('500.jade', {});
}
});

这会将您的图像写入流。您还可以通过提供静态文件的文件服务器或网络服务器提供您的图像,然后通过 http 从您的翡翠模板访问它。由于上述政策,您无法加载本地资源,例如 file://path/to/local/file

于 2013-05-13T14:01:38.400 回答