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

은 노드 서버 또는 클라이언트 자바 스크립트에서이 코드입니까? – user568109

+0

이 코드는 내 노드 server.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', {}); 
} 
}); 

이것은 이미지를 스트림에 씁니다. 정적 파일을 제공하는 파일 서버 또는 웹 서버를 통해 이미지를 제공 한 다음 http를 통해 jade tmeplate에서 액세스 할 수도 있습니다. 위에서 언급 한 정책으로 인해 file : // path/to/local/file과 같은 로컬 리소스를로드 할 수 없습니다.