nuxt3(h3の関数)でのファイルアップロード

NuxtJS
この記事は約2分で読めます。

花粉症に悩まされる時期がまだまだ続いておりますが、強力な薬を服用することで凌いでます。

さて、今回はnuxt3でファイルアップロードを実装する方法を見ていきます。nodejsのexpressアプリケーションでは、multerやformidableといった素晴らしいライブラリを使って簡単にアップロード処理を実装することができます。nuxt3(h3)でmulterやformidableのライブラリを使うこともできるのですが、外部ライブラリを使わずとも標準機能で簡単にファイルアップロードを実装することができるようになっています。今回はその方法を見ていきます。

環境

  • macOS Catalina (intel cpu)
  • nuxt 3.4.1
  • Node.js 18.15.0

サンプル

早速サンプルを見ていきます。

app.vue

fetchでformデータを処理するにはFormDataを使います。今回は、textとfileの2種類のデータをPOSTするサンプルとしています。

server/api/upload.post.ts

readMultipartFormDataという関数でbodyをパースします。この関数は、nuxt3の内部で使われているh3というフレームワークが提供している関数です。関数の引数にeventオブジェクトを渡すとパースした結果が返ります。

早速実行してみましょう。3つの日本語ファイル名を含む画像ファイルを送信してみます。

リクエストした結果を返せていることが分かります。

まとめ

nuxt3では、標準でファイルアップロードを実装するための関数があります。multerやformidableのようにファイルデータをディスクに保存したりといった他の付加機能はないので、そこは自分で実装する必要があります。

参考リンク

コメント

タイトルとURLをコピーしました