2013-04-22 220 views
0

我想從一個文本文件裏的字符串(文件名)加載圖像文件來加載本地資源:不允許使用expressjs

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來提供文件。任何想法,我在做什麼錯在這裏?

+0

是您的節點服務器或客戶端javascript中的代碼? – user568109 2013-04-22 11:34:30

+0

此代碼來自我的節點server.js文件。我應該提供更多數據嗎?爲什麼這會被投票呢? – dopatraman 2013-04-23 02:05:22

回答

2

你的問題與Same origin policy有關。如果你使用快遞,你可以這樣做:

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從您的玉石tmeplate訪問它。由於上面提到的策略,您不能加載本地資源,如file:// path/to/local/file