X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FInflateColumn%2FFile.pm;h=0fde5e80af88bcc0144e5fe919c83e413d671129;hb=d88ecca6486a2b1c4b6e2f0440165b186aab39bc;hp=d462bccb7d06adc587ef40ef1982c88f8c0fa2fe;hpb=26ddc864d0c6b21a64c1c390f4c4b5e031aed2b2;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/InflateColumn/File.pm b/lib/DBIx/Class/InflateColumn/File.pm index d462bcc..0fde5e8 100644 --- a/lib/DBIx/Class/InflateColumn/File.pm +++ b/lib/DBIx/Class/InflateColumn/File.pm @@ -58,7 +58,7 @@ sub delete { sub insert { my $self = shift; - + # cache our file columns so we can write them to the fs # -after- we have a PK my %file_column; @@ -95,8 +95,10 @@ sub _save_file_column { my $fs_file = $self->_file_column_file($column, $value->{filename}); mkpath [$fs_file->dir]; - - File::Copy::copy($value->{handle}, $fs_file); + + # File::Copy doesn't like Path::Class (or any for that matter) objects, + # thus ->stringify (http://rt.perl.org/rt3/Public/Bug/Display.html?id=59650) + File::Copy::copy($value->{handle}, $fs_file->stringify); $self->_file_column_callback($value, $self, $column); @@ -111,8 +113,10 @@ DBIx::Class::InflateColumn::File - map files from the Database to the filesyste In your L table class: - __PACKAGE__->load_components( "PK::Auto", "InflateColumn::File", "Core" ); - + use base 'DBIx::Class::Core'; + + __PACKAGE__->load_components(qw/InflateColumn::File/); + # define your columns __PACKAGE__->add_columns( "id", @@ -134,7 +138,7 @@ In your L table class: size => 255, }, ); - + In your L class: @@ -150,15 +154,15 @@ name as name. body => '....' }); $c->stash->{entry}=$entry; - + And Place the following in your TT template - + Article Subject: [% entry.subject %] Uploaded File: File Body: [% entry.body %] - + The file will be stored on the filesystem for later retrieval. Calling delete on your resultset will delete the file from the filesystem. Retrevial of the record automatically inflates the column back to the set hash with the