Node.js 中实现 HTTP 206 内容分片(二)

2014-11-23 21:26:38 · 作者: · 浏览: 38
(response, 405, {"Allow" : "GET"}, null);
return null;
}

var filename =
initFolder + url.parse(request.url, true, true).pathname.split('/').join(path.sep);

var responseHeaders = {};
var stat = fs.statSync(filename);
// 检查文件是否存在,不存在就返回404 Not Found
if (!fs.existsSync(filename)) {
sendResponse(response, 404, null, null);
return null;
}
responseHeaders["Content-Type"] = getMimeNameFromExt(path.extname(filename));
responseHeaders["Content-Length"] = stat.size; // 文件大小

sendResponse(response, 200, responseHeaders, fs.createReadStream(filename));
}

function sendResponse(response, responseStatus, responseHeaders, readable) {
response.writeHead(responseStatus, responseHeaders);

if (readable == null)
response.end();
else
readable.on("open", function () {
readable.pipe(response);
});

return null;
}

function getMimeNameFromExt(ext) {
var result = mimeNames[ext.toLowerCase()];

// 最好给一个默认值
if (result == null)
result = "application/octet-stream";

return result;
}