summaryrefslogtreecommitdiffstats
path: root/lib/Web/Request/Upload.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Web/Request/Upload.pm')
-rw-r--r--lib/Web/Request/Upload.pm22
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/Web/Request/Upload.pm b/lib/Web/Request/Upload.pm
index ff3592c..a3d8d77 100644
--- a/lib/Web/Request/Upload.pm
+++ b/lib/Web/Request/Upload.pm
@@ -24,9 +24,25 @@ has filename => (
isa => 'Str',
);
-sub basename {
- ...
-}
+# XXX Path::Class, and just make this a delegation?
+# would that work at all on win32?
+has basename => (
+ is => 'ro',
+ isa => 'Str',
+ lazy => 1,
+ default => sub {
+ my $self = shift;
+
+ require File::Spec::Unix;
+
+ my $basename = $self->{filename};
+ $basename =~ s{\\}{/}g;
+ $basename = (File::Spec::Unix->splitpath($basename))[2];
+ $basename =~ s{[^\w\.-]+}{_}g;
+
+ return $basename;
+ },
+);
__PACKAGE__->meta->make_immutable;
no Moose;