| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
HTML::FormFu::Constraint::File::MIME - MIME Type Constraint
Arguments: $mime_type
Arguments: \@mime_types
Optional.
Accepts a single MIME-type or an arrayref of MIME-types. Each is checked against the uploaded file's MIME-type (as given by the browser), and the constraint passes if any one of the given types matches.
Arguments: $regex
Optional.
Accepts a string to be interpreted as a regex, and is checked against the uploaded files's MIME-type (as given by the browser).
The regex uses the /x flag, so that whitespace in the given string is
ignored.
Is a sub-class of, and inherits methods from HTML::FormFu::Constraint
Carl Franks, cfranks@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
package HTML::FormFu::Constraint::File::MIME; use Moose; extends 'HTML::FormFu::Constraint'; use List::MoreUtils qw( any ); use Scalar::Util qw( blessed ); has regex => ( is => 'rw', traits => ['Chained'] ); has types => ( is => 'rw', traits => ['Chained'] ); sub constrain_value { my ( $self, $value ) = @_; return 1 if !defined $value || $value eq ''; return if !blessed($value) || !$value->isa('HTML::FormFu::Upload'); my $input = $value->headers->content_type; my $types = $self->types; my $regex = $self->regex; if ( defined $types ) { if ( ref $types ne 'ARRAY' ) { $types = [$types]; } return 1 if any { $input eq $_ } @$types; } if ( defined $regex ) { return $input =~ /$regex/x; } return; } __PACKAGE__->meta->make_immutable; 1; __END__