請參閱我正在使用Node(和TS btw)進行培訓,並嘗試使用多個請求/響應選項來執行一項簡單的服務器。但我有一個問題,我不知道如何解決,而不使用Express(至少現在我不想使用它)。Node.js:我的HTML需要一個圖像
我有一個HTML文件,它要求一個圖像文件。在IDE中,一切看起來都很順利,但是當服務器運行時,無法找到映像。這很明顯,原因是:HTML發出請求,服務器不知道如何處理。事情是,我認爲文檔可以引用其他文件,而無需與服務器通話。
什麼是我的問題的優雅和工作解決方案?
在此先感謝。
import * as http from 'http'
import * as fs from 'fs'
fs.readFile('doc/kmCNHkq.jpg', function (err, data) {
let binaryimg = new Buffer(data).toString('base64');
if (err) throw err;
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'image/jpeg'});
res.end(data);
console.log("Delivered the jpeg");
}).listen(8000);
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(binaryimg);
console.log("Delivered base64 string");
}).listen(8124);
console.log("Unless bug, both servers are listening");
});
fs.readFile('doc/index.html', function(err, data) {
http.createServer(function(req,res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data)
}).listen(80);
console.log("HTML server is running")
})
(main.ts;目標ES6)
<html>
<head>
</head>
<body>
<img src="doc/kmCNHkq.jpg"/>
</body>
</html>
(的index.html)
觀察:我曾經離開HTML文件中的 '../doc/' 和資源在'../img/'上,但是看起來HTML使用相對路徑,所以我將圖像複製到HTML文件夾中。如果解決方案也是這樣,我可以將資源留在他們各自的文件夾中,這將非常感激。
@編輯: 現在我正在使用此開關/案件請求處理程序。按照預期工作,HTML對圖像的請求被解釋爲正常請求(可能不會最終縮放,idk,但將其擰緊)。非常感謝!
import * as http from 'http'
import * as fs from 'fs'
var stream: fs.ReadStream,
folder = __dirname.substr(0, __dirname.length - 3);
http.createServer(function(req,res) {
switch (req.url){
case('/jpeg'):
stream = fs.createReadStream(folder + 'img/kmCNHkq.jpg');
stream.pipe(res);
console.log("Delivering the jpeg");
break;
case('/base64'):
fs.readFile('img/kmCNHkq.jpg', function (err, data) {
let img64 = new Buffer(data).toString('base64');
if (err) throw err;
res.end(img64);
console.log("Delivered base64 string");
})
break;
case('/html'):
stream = fs.createReadStream(folder + 'doc/index.html');
stream.pipe(res);
console.log("Sending the docs");
break;
default:
console.log("Shit happens");
}
}).listen(80)
(main.ts)
<html>
<body>
<img src="jpeg"/>
</body>
</html>
(的index.html)
正是我在找的東西。看,我只引用了TS和Node,以便人們可以知道如何閱讀代碼。然而,解決方案需要的是結構性解決方案。我一直知道多個端口非常笨重,所以'IncomingMessage.url'的建議確實有幫助。我會告訴你代碼如何結束。還有改進的空間,但肯定會更好。 – eduardogbg