package Sledge::Plugin::SaveUpload; use strict; use vars qw($VERSION); $VERSION = 0.01; use File::Copy; sub import { my $class = shift; my $target_class = $ENV{MOD_PERL} ? 'Apache::Upload' : 'Sledge::Request::Upload'; no strict 'refs'; *{"$target_class\::save"} = sub { my($self, $path) = @_; link($self->tempname, $path) or copy($self->tempname, $path); }; } 1; __END__ =head1 NAME Sledge::Plugin::SaveUpload - Portable upload-Elink() =head1 SYNOPSIS package Your::Pages; use Sledge::Plugin::SaveUpload; my $upload = $self->r->upload('upload_file'); $upload->save($local_path); =head1 DESCRIPTION Sledge::Plugin::SaveUpload は Apache::Upload もしくは Sledge::Request::Upload の C をよりポータブルに利用するためのSledgeプラグインです。C関数は、Cross device では動作しないため、Cが別diskになっている場合などに動作しません。対処法としては環境変数 C などを編集する方法がありますが、このプラグインではCに失敗した場合にCを実行します。 =head1 AUTHOR Original code by Satoshi Tanimoto Etanimoto@edge.co.jpE. Code reimplemented by Tatsuhiko Miyagawa Emiyagawa@edge.co.jpE =head1 SEE ALSO L, L, L =cut