このコードを使用して、画像をクライアントにパイプしました。
req.pipe(fs.createReadStream(__dirname+'/imgen/cached_images/' + link).pipe(res))
動作しますが、画像が完全に転送されない場合があります。ただし、クライアント側(ブラウザー)でもサーバー側(node.js)でもエラーはスローされません。
私の2番目の試みは
var img = fs.readFileSync(__dirname+'/imgen/cached_images/' + link);
res.writeHead(200, {
'Content-Type' : 'image/png'
});
res.end(img, 'binary');
しかし、それは同じ奇妙な行動につながります...
誰かが私のための手がかりを得ましたか?
(抽象コード...)
var http = require('http');
http.createServer(function (req, res) {
Imgen.generateNew(
'virtualtwins/www_leonardocampus_de/overview/28',
'www.leonardocampus.de',
'overview',
'28',
null,
[],
[],
function (link) {
fs.stat(__dirname+'/imgen/cached_images/' + link, function(err, file_info) {
if (err) { console.log('err', err); }
console.log('file info', file_info.size);
res.writeHead(200, 'image/png');
fs.createReadStream(__dirname+'/imgen/cached_images/' + link).pipe(res);
});
}
);
}).listen(13337, '127.0.0.1');
Imgen.generateNew
新しいファイルを作成し、それをディスクに保存して、パス(リンク)を返すだけです。