Plack::Request::Upload - handles file upload requests


Plack documentation Contained in the Plack distribution.

Index


Code Index:

NAME

Top

Plack::Request::Upload - handles file upload requests

SYNOPSIS

Top

  # $req is Plack::Request
  my $upload = $req->uploads->{field};

  $upload->size;
  $upload->path;
  $upload->content_type;
  $upload->basename;

METHODS

Top

size

Returns the size of Uploaded file.

path

Returns the path to the temporary file where uploaded file is saved.

content_type

Returns the content type of the uploaded file.

filename

Returns the original filename in the client.

basename

Returns basename for "filename".

AUTHORS

Top

Kazuhiro Osawa

Tatsuhiko Miyagawa

SEE ALSO

Top

Plack::Request, Catalyst::Request::Upload


Plack documentation Contained in the Plack distribution.

package Plack::Request::Upload;
use strict;
use warnings;
use Carp ();

sub new {
    my($class, %args) = @_;

    bless {
        headers  => $args{headers},
        tempname => $args{tempname},
        size     => $args{size},
        filename => $args{filename},
    }, $class;
}

sub filename { $_[0]->{filename} }
sub headers  { $_[0]->{headers} }
sub size     { $_[0]->{size} }
sub tempname { $_[0]->{tempname} }
sub path     { $_[0]->{tempname} }

sub content_type {
    my $self = shift;
    $self->{headers}->content_type(@_);
}

sub type { shift->content_type(@_) }

sub basename {
    my $self = shift;
    unless (defined $self->{basename}) {
        require File::Spec::Unix;
        my $basename = $self->{filename};
        $basename =~ s|\\|/|g;
        $basename = ( File::Spec::Unix->splitpath($basename) )[2];
        $basename =~ s|[^\w\.-]+|_|g;
        $self->{basename} = $basename;
    }
    $self->{basename};
}

1;
__END__