2017-02-16 17 views
-1

index.htmlにある画像を表示しようとしています。これは<imgタグに保存され、私のサーバーがindex.htmlファイルを呼び出すと、そのファイルに含まれているファイルのすべてのパスも独自のサービスをチェックしてロードされていました。ノードサーバーから画像を表示する方法は?

JSのようなすべての種類のファイルは、CSSHTMLはロードされませんが、それはそれは、ブラウザ上でロードされなかったファイルをのimgに来たときに、コンソールにはエラーなっています。

画像のパスが正しいです。私は画像ファイルが.pngだったので、画像/ pngに設定されたファイルコンテンツタイプをロードするのにfs.readFile()を使用しています。

誰でも私にここで起こっていることを明確にすることができますか?

+0

imgタグは、ファイルタイプまたはベース64タイプのいずれかでのみイメージをレンダリングします。イメージをベース64に変換しましたか? –

+0

はいfs.readFile()にエンコードタイプbase64を使用しています – Raghu

+0

base64文字列をバッファーに変換しましたか? var b =新しいバッファ( 'SmF2YVNjcmlwdA =='、 'base64') var s = b.toString( 'hex'); –

答えて

0

htmlのimgタグのようにimgタグがbase64デコーダであるため、fs.readFile()エンコーダはbase64でなければなりません。デフォルトのノードはfs.readFileまたはwriteFileのエンコーダとしてutf-8を使用します。画像のベース64として入力してください

fs.readFile(filepath, 'base64', (err, file) => { 
     if (err) { 
      res.writeHead(500, { 'Content-Type': 'image/png' }); 
      res.write(err); 
      res.end(); 
      return; 
     } 
     res.writeHead(200 , { 'Content-Type': 'image/png' }); 
     res.end(file,'base64'); 
    }); 

これは私のために働いています。

関連する問題