先月にkyを使用したファイルダウンロード方法を公開しましたが、コメントで
Deno にはファイルダウンロード用のモジュールがあります。
download | Deno
とご教示頂いたので、今回はその"download"モジュールを使用したファイルダウンロードを解説します。
このモジュールについて
downloadは、Denoのfetch api
をベースにしたURLからファイルをダウンロードすることができるモジュールです。
使い方
mod.tsからdownload関数をインポートして使えます。
import { download } from "https://deno.land/x/download/mod.ts";
const url =
"https://raw.githubusercontent.com/denolib/high-res-deno-logo/master/deno_hr.png";
const fileName = "deno.png";
const dir = ".";
await download(url, { file: fileName, dir });
実行するときはネットワークにアクセスする権限と書き込み権限が必要なので、オプションに--allow-net
と--allow-write
を追加します。
エラー処理について
エラー処理は、try/catch文
を使うか、Promise
のcatch
が使えます。
try/catch文
import { download } from "https://deno.land/x/download/mod.ts";
const url =
"https://raw.githubusercontent.com/denolib/high-res-deno-logo/master/deno_hr.png";
const fileName = "deno.png";
const dir = ".";
try {
await download(url, { file: fileName, dir });
} catch (err) {
console.error(err);
}
Promise
import { download } from "https://deno.land/x/download/mod.ts";
const url = 'https://raw.githubusercontent.com/denolib/high-res-deno-logo/master/deno_hr.png';
const fileName = "deno.png";
const dir = ".";
await download(url, { file: fileName, dir })
.catch((err) => {
console.error(err);
});
やってみる
できました
環境
$ deno --version
deno 1.2.2
v8 8.5.216
typescript 3.9.2
参考
- https://deno.land/x/download
- https://qiita.com/Seraimu/items/7f443d7dbfe83783d79c のkerupani129さんのコメント