FilePondというライブラリを使うと、フォームのファイルアップロードを手軽に強化することができます。

プラグインを導入するだけで、ドラッグ・アンド・ドロップでファイルを選択したり、選択されたファイルをプレビューしたりできるようになります。
当記事では、FilePondでファイルアップロードできるようにする方法を紹介します。
サンプルコード
はじめにサンプルコードをご紹介します。
ファイルをドラッグ・アンド・ドロップすることができるようになっています。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>FilePondのサンプル</title>
    <!-- filepondのCSSを読み込む-->
    <link
      href="https://unpkg.com/filepond/dist/filepond.css"
      rel="stylesheet"
    />
  </head>
  <body>
    <h1>FilePondのサンプル</h1>
    <!-- フォームをつくる -->
    <form action="">
      <!-- inputタグにクラスを追加する -->
      <input type="file" class="filepond" />
      <!-- 送信ボタンを設置 -->
      <button type="submit">送信する</button>
    </form>
    <!-- CDNでfilepondを読み込む -->
    <script src="https://unpkg.com/filepond/dist/filepond.js"></script>
    <!-- FilePondをフォームに適用 -->
    <script>
      // FilePondを適用する要素を選択する
      const target = document.querySelector('input[type="file"]');
      // FilePondを適用する
      FilePond.create(target, {
        storeAsFile: true
      });
    </script>
  </body>
</html>
最低限のオプションを指定しているため、プレビューなどは有効化していませんが、これだけでもだいぶ使いやすくなっています。
ざっくり解説
filepondを読み込む
まずはFilePondを読み込みます。
<!-- filepondのCSSを読み込む-->
<link
  href="https://unpkg.com/filepond/dist/filepond.css"
  rel="stylesheet"
/>
<!-- CDNでfilepondを読み込む -->
<script src="https://unpkg.com/filepond/dist/filepond.js"></script>headタグでcss、bodyタグ最後でJavascriptを読み込んでいます。ここではCDNで読み込んでいます。
inputタグを設置する
次にフォームにinputタグを設置し、クラスを付与しておきます。
<input type="file" class="filepond" />filepondを適用する
あとは設置したinputタグにfilepondを適用するだけです。
<!-- FilePondをフォームに適用 -->
<script>
    // FilePondを適用する要素を選択する
    const target = document.querySelector('input[type="file"]');
    // FilePondを適用する
    FilePond.create(target, {
    storeAsFile: true
    });
</script>querySelectorでinput要素を取得し、filepondを適用します。
formタグなしで使うこともできる
filepondはフォームに組み込むことなく、単独で使用することもできます。
ファイルがドラッグ・アンド・ドロップされたら、すぐに指定したURLにPOSTすることもできます。
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>FilePondのサンプル</title>
    <!-- filepondのCSSを読み込む-->
    <link
      href="https://unpkg.com/filepond/dist/filepond.css"
      rel="stylesheet"
    />
  </head>
  <body>
    <h1>FilePondのサンプル</h1>
    <h2>【その2】ドラッグ・アンド・ドロップされたらアップロードするサンプル</h2>
    <div>
      <!-- FilePondを適用するタグを設置する -->
      <input type="file" class="filepond" />
    </div>
    <!-- CDNでfilepondを読み込む -->
    <script src="https://unpkg.com/filepond/dist/filepond.js"></script>
    <!-- FilePondをフォームに適用 -->
    <script>
      // FilePondを適用する要素を選択する
      const target = document.querySelector('input[type="file"]');
      // FilePondを適用する
      FilePond.create(target, {
        // POSTするAPIを指定する
        server: "http://localhost:8000"
        // serverオプションを指定すると、自動的に指定したAPIにアップロードされるようになります
      });
    </script>
  </body>
</html>
serverオプションにPOST先のURLを指定しておくと、ファイルが選択されると同時に自動的にアップロードさせることができます。
ファイルをアップロードできればよいというなら、serverオプションを指定するだけで十分ですね。
まとめ
filepondの使い方をかんたんにまとめてみました。
今回紹介したのはほんのさわりです。プラグインを導入すれば、アップロード前に画像のトリミングをしたり、PDFファイルのサムネイル取得などを行うこともできます。
ファイルアップロードを実装したいときに活用してみてください。
 
  
  
  
   
      

コメント