2013-09-29 2 views
-1

나는 노드 j를 학습하지만 나는로드 블록을 만났다. 인스턴트 파일을 제공하는 간단한 서버를 설치하려고합니다. 내 문제는 명시 적으로 URL 확장명을 입력하지 않으면 파일 확장명을 가져올 수 없다는 것입니다. httpheader 'content-type'은 정의되지 않은 상태로 제공됩니다. 여기 내 코드는 매우 간단합니다 :nodeJS의 요청에서 마임 유형 가져 오기

var http = require("http"), 
path = require("path"), 
fs = require("fs"); 

var server = http.createServer(function(request, response){ 

console.log([path.extname(request.url), request.headers['content-type']]); 
var fileName = path.basename(request.url) || "index.html", 
    filePath = __dirname + '/public/' + fileName; 
console.log(filePath); 

fs.readFile(filePath, function(err,data){ 
    if (err) throw err 
    response.end(data); 
}); 


}) 
server.listen(3000) 

아이디어가 있으십니까? FYI 난 단지 connect 또는 다른 다이빙으로 가고 싶지 않다. 나는 갈기를 버리고 모듈로 바로 가기 전에 무슨 일이 일어나는지 알고 싶다.

답변

1

정적 웹 서버는 일반적으로 깊은 마법을 수행하지 않습니다. 예를 들어, nginx에는 여기에 mime 유형에 대한 파일 확장자의 작은 매핑이 있습니다. http://trac.nginx.org/nginx/browser/nginx/conf/mime.types

대체로 fallback 논리가 html로 기본 설정되어 있습니다. file 유틸리티에서 파일 데이터의 시작 부분을보고이를 기반으로 추측하는 데 사용되는 "마법 번호"파일 데이터베이스를 사용할 수도 있습니다.

하지만 여기에는 마법이 없습니다. 그것은 반면,

  • 아마 일반적으로 HTML 만 자원이없는 확장과 URL을 가지고 있기 때문에 기본 HTML을 사용하여 파일 내용으로 다음 옵션
  • 의 시작 부분으로 이동 가능한 파일 확장자에 의해

    • 이동 기본적입니다 이미지, CSS는, JS는, 글꼴, 멀티미디어 등 거의 항상

    은 또한 브라우저는 일반적으로 컨텐츠 유형 헤더가 일치하지 올바르게 심지어 파일을 intepret 것이다 검사의 매우 강력한 세트를 가지고 있습니다 자신의 URI에 파일 확장자를 사용합니까 실제 입술과 폰 데이터.

  • +0

    고마워요. –