アップロードされたファイルのコンテントタイプを取得する
アップロードされたファイルのコンテントタイプを取得するには、Mojo::Uploadクラスのheadersメソッドを使用し、Mojo::Headersオブジェクトを取得し、content_typeメソッドを呼び出します。
# アップロードされたファイルのコンテントタイプを取得する my $content_type = $upload->headers->content_type;
コンテントタイプと拡張子
一般的な画像のコンテントタイプとPDFの拡張子について記述しておきます。
PNG
# 拡張子 コンテントタイプ png image/png
JPEG
# 拡張子 コンテントタイプ jpeg image/jpeg jpg image/jpeg
GIF
# 拡張子 コンテントタイプ gif image/gif
# 拡張子 コンテントタイプ pdf application/pdf
コンテントタイプから拡張子を決定する
アップロードされたファイルを保存したい場合に、コンテントタイプの種類に応じて、ファイルの拡張性を作成したいという場合があると思います。そのようなロジックのサンプルをここに記述しておきます。正規表現を使って判定しています。
my $content_type = 'image/png'; my $ext; # PNG if ($content_type =~ m|\bimage/png\b|) { $ext = 'png'; } # JPEG elsif ($content_type =~ m|\bimage/jpeg\b|) { $ext = 'jpg'; } # GIF elsif ($content_type =~ m|\bimage/gif\b|) { $ext = 'gif'; } # PDF elsif ($content_type =~ m|\bapplication/pdf\b|) { $ext = 'pdf'; } else { # 予想していないコンテントタイプ } print "$ext\n";