我正在尝试使用Node.JS创建一个基本的Web服务器,但是遇到了无法正确提供图像的问题。
var server = http.createServer(function (request, response){
if(request.url === '/') {
fs.readFile('public/index.html', 'utf8', function(errors, contents){
response.write(contents);
response.end();
});
} else {
fs.readFile("public" + request.url, 'utf8', function(errors, contents){
if (!errors) {
response.end(contents);
} else {
console.log('Failed to read file: /public' + request.url);
response.writeHead(404);
response.end();
}
});
}
});
一切正常,除了如果您去查看它尝试下载的图像(我认为它已损坏-无法打开它),这不是我想要的,我希望可以在其中正确地提供图像浏览器(不是通过标签)
要点:我需要能够正确给出正确的标题(我是否需要switch语句并通过它设置它们?),因为chrome会发出警告
Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost/css.css".
答案 0 :(得分:2)
您可以使用expressjs:http://expressjs.com/
const express = require('express')
const app = express()
app.get('/', (req, res) => res.sendFile('public/index.html'))
app.use(express.static('public'))
app.listen(8080, () => console.log('Example app listening on port 8080!'))
NB:
您的代码不安全:"public" + request.url
。您的用户可以获取服务器中的所有文件:fs.readFileSync("public/../../../README.txt");
您将在父文件夹上收到错误消息。
错误:ENOENT:没有此类文件或目录,请打开“ C:\ README.txt”。