2013-04-22 4 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

+0

этот код из моего файла node.js узла. есть ли больше данных, которые я должен предоставить? почему это проголосовало? – dopatraman

ответ

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', {}); 
} 
}); 

Это напишет ваше изображение в поток. Вы также можете предоставить свое изображение через файловый сервер или веб-сервер, обслуживающий статические файлы, а затем получить доступ к нему с вашего jade tmeplate через http. Из-за упомянутой выше политики вы не можете загружать локальные ресурсы, такие как file: // path/to/local/file

Смежные вопросы