[Catalyst] Directory with Catalyst::Model::File

Ash Berlin ash at cpan.org
Thu Dec 21 10:53:07 GMT 2006


Xavier Robin wrote:
> Hello,
> 
> I want to save uploaded files in a directory specific for the user (using the 
> user_id). For example, the files of user 326 would be saved in 
> directory /root/files/3/2/6/.
> 
> I use Catalyst::Model::File to do this. It's really great!
> I configured it to store files in /root/files/ by default (root_dir). Now I 
> use the following code for a specific file:
> 
>> my @path = split('', $c->user->user_id);
>> my $file_obj = $c->model('File')->file(@path , $filename);
> 
> But the file "test.txt" for user "326" is saved as /root/files/3 instead 
> of /root/files/3/2/6/test.txt.
> 
> It looks like C::M::File uses only the first argument and ignores all the 
> others, unlike Path::Class::File that allows to define the path with a list 
> of arguments.
> 
> I could fix the problem by using the following code where I pass a single 
> argument with the complete path: 
> 
>> my @path = split('', $c->user->user_id);
>> my $path = join ('/', @path);
>> my $file_obj = $c->model('File')->file($path . '/' . $filename);
> 
> But I find the Path::Class::File syntax looks much smarter and more 
> platform-independant. Is there an different syntax for C::M::File?
> 
> Thanks for this great framework !
> 
> Xavier
> 

Nope - I just forgot to do that. If you could make a patch containing a 
failing test I'll go ahead and implement that.

Cheers
Ash



More information about the Catalyst mailing list