私はnodejを学びたいと思っています。これを行う最善の方法は、Expressやその他の非コアモジュールを使わずにいくつかのことをやってみることだと思いました。私はいくつかのテキストとイメージが同時に配信されるようにしようとしています。私がしようとしているコードがされていますので、理想的に配信されるべきものであるNodejs:同じレスポンス(テキストとイメージ)で異なるコンテンツタイプを返す方法は?
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(request,response) {
fs.readFile('my_pic.jpg', function(error, file) {
response.writeHead(200, {'content-type':'text/html'});
response.write('<p>hi there!</p>');
response.writeHead(200, {'content-type':'image/jpg'});
response.write(file, 'image');
response.end();
});
});
var port = process.env.PORT || 8080;
server.listen(port, function() {
console.log('Listening on port ' + port);
});
:
<html>
<body>
<p>hi there</p>
<img src='my_pic.jpg'/>
</body>
</html>
しかし、その代わりに、何も表示されていません。
私は、テキストを表示する 'hi there'を書き込んだ後でresponse.end()を入れてみました。その後、画像を表示したテキストと画像(ヘッダを含む)の場所を入れ替えようとしましたが、実際のWebページのように、両方を同時に表示する方法を理解することはできません。
さまざまな種類のコンテンツを同じWebページに配置する方法について説明できますか?異なる回答が必要ですか?何か私は別の質問に出くわした:
nodejs - How to read and output jpg image?
そのようなことが解決策のように見えますが、私は、私は多くの経験ではありません(私の状況にこれを適用する方法を見つけ出すことはできません物事のサーバー側)
感謝
EDIT:それはuser568109の応答から作業しました:
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(request,response) {
fs.readFile('my_pic.jpg', function(error, file) {
var imagedata = new Buffer(file).toString('base64');
response.writeHead(200, {'content-type':'text/html'});
response.write("hi there!<img src='data:my_pic.jpg;base64,"+imagedata+"'/>");
response.end();
});
});
var port = process.env.PORT || 8080;
server.listen(port, function() {
console.log('Listening on port' + port);
});
これは画像を埋め込む作業がたくさんあるようですが、複数の画像を入れたいのであれば、それらのファイルストリームのコールバックを入れ子にしておく必要があります。
私もそれをこのようにしようとしたが、それは動作しません:
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(request,response) {
response.writeHead(200, {'content-type':'text/html'});
response.write("hi there!<img src='my_pic.jpg'/>");
response.end();
});
var port = process.env.PORT || 8080;
server.listen(port, function() {
console.log('Listening on port' + port);
});
私は、サーバーがdoesnのため、これはどのようなライン
response.write('<img src="my_pic.jpg"/>')
、の意味人だったかどうかわかりませんでした私の代わりにイメージを取ってくるように別の要求をしているようだ?それは壊れたアイコンイメージを表示しているだけです。
1つの応答に2つのHTTP要求を詰め込むように見えます。本当にあなたは 'response.write( '
');を書いてください。そして、ブラウザはまずHTMLをダウンロードしてから、別のmy_pic.jpgをダウンロードするように要求します。 –
codefactor
マルチパートレスポンスを送信したいようです。私はブラウザがそれを扱うことができるかどうかわからない。答えはクライアント側で解析する必要があります。 – MaxArt
可能な複製[node.jsを使用して複数の部分のHTTP応答を作成](http://stackoverflow.com/questions/11494209/construct-multi-part-http-response-using-node-js) – maerics