Maison > Questions et réponses > le corps du texte
//加载静态文件,结果加载css,js的时候会报错
function static_server_file(file,res){
var rs = fs.createReadStream(file);
var contents;
console.log(content_type(file));
res.writeHead(200,{'Content-Type':content_type(file)});
rs.on('readable',function(){
var d = rs.read();
var str;
if(d){
if(typeof d == 'string'){
str = d;
}else if( typeof d == 'object' && d instanceof Buffer){
str = d.toString('utf-8');
}
}
if(str){
if(!contents){
contents = str;
}else{
contents += str;
}
}
//res.write(contents);
});
rs.on('end',function(){
//console.log(contents);
res.write(contents);
res.end();
});
rs.on('error',function(e){
res.writeHead(404,{'Content-Type':'appalication/json'});
var out = {
error:'not found',
message:file+'not found'
};
res.end(JSON.toString(out));
return;
})
}
//根据文件确定mine类型
function content_type(file){
var extname = path.extname(file);
var type;
switch(extname.toLowerCase()){
case '.html':
type = 'text/html';
break;
case '.js':
type = 'text/javascript';
break;
case '.css':
type = 'text/css';
break;
case '.jpg':
type = 'image/jpg';
break;
default:type = 'text/plain';
}
return type;
}
//这是修改后的版本,加载css,js的时候没有问题,这是为什么
function static_server_file(file,res){
fs.readFile(file,function(err,data){
if(err){
if(err && err.error == 'no_such_album'){
send_failure(res,404,err);
}else{
send_failure(res,500,err);
}
}
res.writeHead(200,{'Content-Type':content_type(file)});
res.write(data);
res.end();
});
}
![图片描述][1]
天蓬老师2017-04-11 09:20:25
你的这个 函数 static_server_file
里面处理这么复杂干什么呢?
function static_server_file(file,res){
var rs = fs.createReadStream(file);
var contents;
console.log(content_type(file));
rs.on('readable',function(){
res.writeHead(200,{'Content-Type':content_type(file)});
rs.pipe(res);
});
rs.on('error',function(e){
res.writeHead(404,{'Content-Type':'appalication/json'});
var out = {
error:'not found',
message:file+'not found'
};
res.end(JSON.toString(out));
return;
})
}
这样能满足你的要求么?