package HTML::Form::FileInput; use strict; use parent 'HTML::Form::TextInput'; our $VERSION = '6.11'; # ABSTRACT: An HTML form file input element for use with HTML::Form sub file { my $self = shift; $self->value(@_); } sub filename { my $self = shift; my $old = $self->{filename}; $self->{filename} = shift if @_; $old = $self->file unless defined $old; $old; } sub content { my $self = shift; my $old = $self->{content}; $self->{content} = shift if @_; $old; } sub headers { my $self = shift; my $old = $self->{headers} || []; $self->{headers} = [@_] if @_; @$old; } sub form_name_value { my ( $self, $form ) = @_; return $self->SUPER::form_name_value($form) if $form->method ne "POST" || $form->enctype ne "multipart/form-data"; my $name = $self->name; return unless defined $name; return if $self->{disabled}; my $file = $self->file; my $filename = $self->filename; my @headers = $self->headers; my $content = $self->content; my %headers = @headers; if ( defined $content || grep m/^Content$/i, keys %headers ) { $filename = $file unless defined $filename; $file = undef; unshift( @headers, "Content" => $content ); } elsif ( !defined($file) || length($file) == 0 ) { return; } # legacy (this used to be the way to do it) if ( ref($file) eq "ARRAY" ) { my $f = shift @$file; my $fn = shift @$file; push( @headers, @$file ); $file = $f; $filename = $fn; } return ( $name => [ $file, $filename, @headers ] ); } 1; __END__ =pod =encoding UTF-8 =head1 NAME HTML::Form::FileInput - An HTML form file input element for use with HTML::Form =head1 VERSION version 6.11 =head1 AUTHOR Gisle Aas =head1 COPYRIGHT AND LICENSE This software is copyright (c) 1998 by Gisle Aas. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut