6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

http モジュール(node.js)で、ローカル画像ファイルを使用する。

Last updated at Posted at 2019-10-24

この記事は、**httpモジュール**で、ローカル画像ファイルを使う方法を書き込んだ
個人的なメモです。:point_up:

httpモジュール内で、画像を表示させる一番簡単な方法として、

画像アドレスを使用する

//html
<img src="http://○○○○○○">

//pug
img(src="http://○○○○○○")

が、あります。が、この方法は任意の画像をどこぞにアップロードして画像アドレスを
取得しなければなりません。
例えば私がN予備校の授業で作った**アンケートページ**では、
グーグルドライブに画像をアップロードして、そこからアドレスを取得して使っています。:cloud:

尚、グーグルドライブの画像を使うにはちょっとクセがあります。

:writing_hand: グーグルドライブの画像を使う場合
グーグルドライブにアップロードした任意の画像→
右クリック→「共有可能なリンクを取得」で取得するURL ・・ではエラーになってしまいます。

//「共有可能なリンクを取得」でコピーできるURL
https://drive.google.com/open?id=○○○○○○○○○○

利用するには、このアドレスの「id=」の前を入れ替えます。

//表示用のアドレス
http://drive.google.com/uc?export=view&id=○○○○○○○○○○

↑表示用のアドレスでidを入れ替えればOK。

これでも十分なんですけどね。

##httpモジュール内のWebページでローカル画像を読み込ませる。
本題です。やり方としては、上に書いた通り、画像URL(画像が表示されるアドレス)があれば
画像が使えるので、画像を表示させるアドレス(パス)を作ります。
使用してる画像ファイル(参考
buta.png buta.png
ファイル構成
index.js  (http.createServerしてるファイル)
views   (ページをレイアウトするpugファイルなどなどを入れたディレクトリ)
 ┣ pugファイル
 ┗ images  (画像ファイルを入れているディレクトリ)
   ┣ buta.png

const fs=require("fs"); // ← 超重要(忘れやすい)

  switch (req.url) {
    case '/index':
      ${indexにリクエストが来た時に動く関数}(req, res);
      break;
    case '/images/buta.pug':  // ← アドレスは任意。本当はuuidとか使うのがいいのかもしれませんが。
      res.writeHead(200, {
      'Content-Type': `image/png; charset=utf-8`  // ← ここがキモ!
      });
      var image = fs.readFileSync("./views/images/buta.png", "binary"); // ← ファイルpathはその環境に合わせてください
      res.end(image, "binary");
      break;
    default:
      break;
  }

switch文で画像アドレスを作り、そこにリクエストがきたらfsモジュールで画像を読み込んで表示させるというただそれだけです。
readFileはSyncにしないとエラーがでます。(私の環境だと)
※ jpg画像の場合は'Content-Type': `image/jpeg;です。(jpgではない)
これでローカル画像が使えます:v_tone1:
例)
<img src="/images/buta.pug">

まとめ
Expressフレームワークは偉大

:star2:参考にさせてもらったContent-Typeまとめページ:star2:
:point_right: https://qiita.com/AkihiroTakamura/items/b93fbe511465f52bffaa

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?