2011-08-18 6 views

답변

6

Connect 자동 것이다 명시 적으로 설정하지 않는 한 콘텐트 유형을 설정하십시오. 여기에 해당 코드 조각이 있습니다. 그것은이 당신을 위해 작동하지 않는 경우 사용자 정의 코드가 가능성이 어떻게 든 기본 동작을 방해 한, 당신의 코드를 게시 mime.lookup을 사용하고

// mime type 
type = mime.lookup(path); 

//<SNIP>.... 

// header fields 
if (!res.getHeader('content-type')) { 
    var charset = mime.charsets.lookup(type); 
    res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); 
} 

을 mime.charsets.lookup.

+0

'mime.lookup()'이 이제'mime.getType()'으로 이름이 변경되었습니다. – Pei

8

Express documentation은 파일 이름을 전달하면이를 수행 할 수 있음을 보여줍니다.

[편집]

여기 static라는 상대 디렉토리에서 파일을 제공하는 예입니다 자동으로 파일을 기반으로 콘텐츠 유형이 제공 설정

var filename = 'path/to/image.png'; 
res.contentType(filename); 
// Content-Type is now "image/png" 

:

var express = require('express'); 
var fs  = require('fs'); 

var app = express.createServer(); 

app.get('/files/:file', function(req, res) { 
    // Note: should use a stream here, instead of fs.readFile 
    fs.readFile('./static/' + req.params.file, function(err, data) { 
    if(err) { 
     res.send("Oops! Couldn't find that file."); 
    } else { 
     // set the content type based on the file 
     res.contentType(req.params.file); 
     res.send(data); 
    } 
    res.end(); 
    }); 
}); 

app.listen(3000); 
+0

감사합니다,하지만 난 그냥 경로 또는 파일 이름에 따라 자동으로 원하는 ... 피하고 ​​싶은거야. – mahemoff

+0

나는 내가 이해할 지 모르겠다. 작은 예제를 게시 할 수 있습니까? –

+0

예제를 사용하여 답변을 업데이트했습니다. 내가 아직도 당신이 찾고있는 것을 오해하고 있습니까? –

2

Express가 연결을 사용하여 연결이 마임을 사용하고, 마임 (노드 사회 공헌 일부 추가 유형) 의 mime.typesnode.types (기본 MIME 아파치 유형) 파일을 포함 . node_modules에있는 mime 복사본 내에서 이러한 파일 중 하나를 사용자 정의하여 필수 컨텐츠 유형을 추가하거나 Mime에 코드에서로드 할 추가 컨텐츠 유형 또는 .types 파일을 지정할 수있는 API가 있습니다. 당신이 표현 (연결)에 대해 알고있는 마임 유형을 확장 할 경우

또한

https://github.com/broofa/node-mime

+0

'require ("mime") .define (...)을 통해 MIME 정의를 추가하는 것이 작동하지 않습니다. 익스프레스 번들 자체 mime 모듈 이겠지요? 번들로 제공되는 mime 모듈에 어떻게 액세스합니까? – panzi

24

, 당신은

express.static.mime.define({'text/plain': ['md']}); 

또는

connect.static.mime.define({'text/plain': ['md']}); 

PS 작업을 수행 할 수 있습니다 마임을 모듈은 현재 https://github.com/broofa/node-mime에 있습니다.

0

다운로드하십시오(또는 Another link)의 mime.types : 다음

var db_mimes=[],mime_ext='' 
$.get('mime.types',{},function(d){ 
    var lines=d.split('\n').filter(function(e){ /* filter which starts with #*/}) 

    lines.forEach(function(line){ 
     mime_ext=line.split(' ') 
     mime_ext[1].split(' ').forEach(function(ext){ 
      db_mimes.push({e:ext,m:mime_ext[0]}) 
     }); 
     //create object for each line . i.e: {mime:'',extension} 
    }); 


}); 

그런 다음 예를 var fname="myfile.png"

var extension=fname.substr((~-this.lastIndexOf(".") >>> 0) + 2) // get extension from name 
var minme=db_mimes.filter(function(el){return el.e === extension})[0] 

+0

끊어진 링크로 인해 downvoted했습니다. –

+0

링크를 변경하고 다시 클릭하고 투표 다운을하겠습니다 : https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types –

+0

감사 Abdennour –

0

fo를 다음 cmd를 실행 한 경우 :

npm install xmimetype ; 

다음을, 내 코드 :

var xm=require("xmimetype"); 

    xm.mimetypeOf("java"); 
    xm.mimetypeOf("./lib/Person.java"); 
    // -> text/x-java-source 

    xm.mimetypeOf("docx"); 
    xm.mimetypeOf("./lib/overview.docx"); 
    // -> application/vnd.openxmlformats-officedocument.wordprocessingml.document 

자세한 내용은 GIT repository을 확인하십시오.


반대는 볼 수 있습니다 :

xm.extensionsOf("image/jpeg"); 
// -> [ 'jpeg', 'jpg', 'jpe' ] 
관련 문제