アップロードされたファイルのサイズを取得する
アップロードされたファイルのサイズを取得してみましょう。アップロードされたファイルのサイズを取得するにはMojo::Uploadクラスのsizeメソッドを使用します。
my $size = $upload->size;
フォームからファイルをアップロードする場合は、フォームで「form」要素の「enctype」属性を「multipart/form-data」にして、ファイルフィールド(file_field)を使って、Mojo::Controllerクラスのparamメソッドを使うと、アップロードされたファイルは、Mojo::Uploadオブジェクトとして取得できます。
HTML側
<form method="POST" enctype="multipart/form-data"> <%= file_field 'image_file' %> </form>
プログラム側
# アップロードされたファイル my $image_file = $c->param('image_file');
ファイルがアップロードされたかの確認
一つ注意してほしいのは、フォームからのアップロードでは、ファイルがアップロードされなかった場合も、Mojo::Uploadオブジェクトが生成されることです。そのためファイルがアップロードされたかどうかは、defined関数でチェックすることはできません。ファイルサイズをチェックする必要があります。
# 正しいアップロードのチェック if ($image_file->size > 0) { } # 間違ったアップロードのチェック if (defined $image_file) { }