var filePath = 'path/to/image.png';
res.contentType(path.basename(filePath));
// Content-Type is now "image/png"
[编辑]
下面是一个例子,它从一个名为static的相对目录中提供文件,并根据提供的文件自动设置内容类型:
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);
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]
6条答案
按热度按时间cwdobuhd1#
另外,如果您想扩展express(connect)知道的MIME类型,可以这样做
或
PS:mime模块现在位于https://github.com/broofa/node-mime
myzjeezk2#
Express文档显示,如果您传入文件名,它就可以做到这一点。
[编辑]
下面是一个例子,它从一个名为
static
的相对目录中提供文件,并根据提供的文件自动设置内容类型:4ktjp1zp3#
Connect将自动设置内容类型,除非您自己显式设置。这是一段代码。它使用mime.lookup和mime.
如果这对你不起作用,那么发布你的代码,因为你的自定义代码可能会以某种方式干扰默认行为。
n9vozmp44#
Express使用Connect,Connect使用Mime,Mime包括文件***mime.types***(Apache提供的默认mime类型)和***node.types***(node社区提供的其他类型)。您可以在node_modules中的mime副本中自定义其中一个文件,以添加所需的内容类型,或者Mime也有一个API,可以让您指定从代码加载的其他内容类型或.types文件。
https://github.com/broofa/node-mime
vyu0f0g15#
下载此database(或Another link):mime.types:,那么
如果你有
var fname="myfile.png"
vh0rcniy6#
运行以下cmd:
然后,在代码中:
有关更多信息,请查看GIT repository。
相反的是可用的: