9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web 標準 API を使って Deno でファイルアップロードを受け取る

Last updated at Posted at 2022-10-01

Deno でファイルアップロードを受け取るには、Request object の formData メソッドを使います。

Deno.serve(async (req) => {
  const data = await req.formData();
  const file = data.get("file");
  const bytes = await new Response(file).arrayBuffer();
  const size = bytes.byteLength;
  console.log("Received file", file.name);
  console.log("byte size =", size);
  return Response.json({ filename: file.name, size });
});

await req.formData() で Web 標準 API の FormData オブジェクトが取得出来ます。

data.get("file") 呼び出しで、File object が取得出来ます (この File も Web 標準 API の File になっています)。

await new Response(file).arrayBuffer() で File の中身を取り出しています。この バイト列 (Uint8Array型) がファイルの内容になっているので、これを使って、保存するなり加工するなり必要な処理を実装する事が出来ます。

上のサーバーを立ち上げた状態で、以下のような curl コマンドで挙動を確認する事が出来ます(file.pdf というファイルがカレントディレクトリにある想定です)。

$ curl -i http://localhost:8000 -F "file=@file.pdf"
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
content-type: application/json
vary: Accept-Encoding
content-length: 37
date: Sat, 01 Oct 2022 11:22:15 GMT

{"filename":"file.pdf","size":375676}
9
1
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
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?