shion のアバター画像もくもくログページ一覧ブログ一覧技術メモ一覧ライセンス表記利用規約外部リンクconnpassGitHubSpeaker DeckTwitter[工事中]Shion のもくログバージョン1.2.5

もくもくログ

主にIT 関連のメモをもくもくと綴っていきます

この記事の情報は古い可能性があります
最終更新日:2019/10/31 14:16:46
Node で画像ダウンロードする実装サンプルJavaScriptNode.js

Node.js でウェブ上の画像をダウンロードするサンプルを検索すると、よくライブラリを使った実装がヒットします。
しかし、別にライブラリを使わずともNode.js の標準API で実装する事が出来たので、そのサンプルをメモしていきます。

検証環境

実行環境

Node.js 8.11.3

画像形式

  • jpg

実装サンプル

使用するAPI

下記2つを組み合わせる事で実装していきます。

  • fs
  • http またはhttps
    → ダウンロード対象のURL の通信プロトコルによって使い分ける必要があります

実装例

const client = require('https') // ダウンロード対象がHTTP の場合はrequire('http') に変更する
const fs = require('fs')


const filename = '任意のファイル名'
const imageUrl = 'ダウンロード対象のURL'


// ダウンロード処理
const writer = fs.createWriteStream(filename)
client.get(imageUrl, res => {
    res.pipe(writer)
    res.on('end', () => {
        // end イベント発火時にすぐファイル書き出し終了すると画像が綺麗に保存できない場合があるので適当な時間経過後に終了する
        setTimeout(() => {
            writer.close()
        }, 1000)
    })
})

注意点

  • ダウンロード対象がHTTP 通信の場合はhttp モジュールを読み込みます
  • ダウンロード対象がHTTPS 通信の場合はhttps モジュールを読み込みます
  • end イベント発火時にすぐファイル書き出し終了すると画像が綺麗に保存できない場合があるので適当な時間経過後に終了する
    • この適切な時間の最適解は不明なので、適宜調整してください

参考文献

一覧に戻る