JavaScriptからinput type=file の最大サイズ制限するコード例

JavaScriptでこういう場面がありました。

  • ファイルをinput type="file"から選択
  • アップロードの最大サイズを制限したい
  • 例えば1ファイル最大5MBまでとか…

これはコード的に制御するしかありません。

知っていれば簡単だけど忘れがちなので、
JSでの input type="file" の最大サイズ指定の方法

それをコード例とか交えてまとめておきます。

ファイル送信の input を作るのが簡単だが…

ファイルを受け取るinputは作るのは簡単です。

▼ 例えばこのようなHTML

▼ ファイル選択時に処理するJavaScript例

このように type="file" のinputを用意するだけです。

ただアップできるファイルサイズには制限がありません。

input type="file" に最大サイズがないとヤバい理由

上記の例では、最大サイズに制限はありません。

  • GB単位のファイルでも、
  • TB単位のファイルでも、
  • EB単位のファイルでも…

どんなに巨大でもサーバーにアップ出来ます。

最大ファイルサイズが4GBまでなのは一部ファイルシステムの話であり、Linux系では実質的な最大ファイルサイズは存在しないようなものです(例 : Linux ext4では最大16TiBのファイルも作成可能)

もしAWSとか使っているなら、ストレージ1GB当たりに月0.08ドルほど(多分それくらい)かかります。あとは書かなくてもヤバいのは分かるはず

input type="file"の最大サイズ制限するコード例

ということで最大サイズを制限してみます。

※ サーバー側の話ではないので注意(後述)

以下のようなチェック処理を追加するだけです。

▼ HTMLをこのように改良

▼ 例えば5MBで制限するJavaScriptコード例

▼ 5MB以内のファイルは問題なくアップ可能

最大ファイルサイズを5MBに制限したinput type=fileの例。5MB以内なら普通にアップロードできる

▼ 5MBを超えるファイルはエラー発生

最大ファイルサイズを5MBに制限したinput type=fileの例。5MB以上だとこの画像のようにエラーを表示する

こういう感じで最大サイズの制限が可能です。

サーバー側でも対策を取らないと意味ない

ここまでのは全てクライアント側の対策です。

サーバー側での対策もしないと意味ありません。

▼ 例えばサーバー側ですべき対策

  • 画像をアップできるRest APIを自作した
  • 最大サイズは5MBまでにしたい
  • 保存時にサーバー側言語でもサイズチェック
  • 例えばPHPだったりNode.jsだったり…

むしろ大事なのはそっちの方かもしれませんね。

クライアント側は気休めくらいの意味しかないです。

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください