[dancer-users] Trouble in uploading file

Fotis E. Psomopoulos fpsom at issel.ee.auth.gr
Thu Aug 1 08:38:24 BST 2013


Hi,

I think I found out what the problem was (PUT vs POST error). This is 
the new (working) code:

post '/upload/:file' => sub {
my $upload_dir = "MyApp/UPLOADS";
my $filename = params->{file};
my $uploadedFile = upload('file_input_foo');
$uploadedFile->copy_to("$upload_dir/$filename");
};

Thank you all for your time and responses!

Regards,

Fotis

On 30/7/2013 8:25 μμ, Curtis Jewell wrote:
>
> On Tue, Jul 30, 2013, at 10:27, Fotis E. Psomopoulos wrote:
>> Dear all,
>>
>> I am quite new to Dancer but I am really amazed on how few lines of code
>> I have to write for the same functionality (still exploring though).
>>
>> However, I have hit the following issue: I am trying to upload a file
>> using the following code:
>>
>> put '/upload/:file' =>  sub {
>>       my $upload_dir = "MyApp/UPLOADS";
>>       my $filename = params->{file};
>>       my $uploadedFile = request->upload($filename);
> Are you sure you don't mean
>
>        my ($uploadedFile) = request->upload('file');
>
> (because the uploads are keyed by the parameter name, not the filename -
> but I could be wrong, I'm not very familiar with Dancer, myself.)
>
>>       debug "My Log 1: " . params->{file};
>>       debug "My Log 2: " . ref($uploadedFile);
>>
>>       open ( UPLOADFILE, "$upload_dir/$filename" ) or die "$!";
>>
>>       while ( <UPLOADFILE> )
>>       {
>>           print UPLOADFILE;
>>       }
>>
>>       close UPLOADFILE;
>>
>>       return "DONE";
>> };
>>
>> The PUT command is done via cURL as follows:
>>
>> curl --upload-file test http://localhost:3000/upload/test
>> DONE
>>
>> The output that I see in the "development dance floor" is the following:
>>
>> [9072]  core @0.000341> request: PUT /upload/test from 127.0.0.1 in
>> /Perl/site/lib/Dancer/Handler.pm l. 56
>> [9072]  core @0.002434> [hit #1]Trying to match 'PUT /upload/test'
>> against /^\/upload\/([^\/]+)$/ (generated from '/upload/:file') in
>> /Perl/site/lib/Dancer/Route.pm l. 84
>> [9072]  core @0.004173> [hit #1]  --> got 1 in
>> /Perl/site/lib/Dancer/Route.pm l. 102
>> [9072]  core @0.006625> [hit #1]  --> named tokens are: file in
>> /Perl/site/lib/Dancer/Route.pm l. 130
>> [9072] debug @0.009443> [hit #1]My Log 1: test in MyApp\lib/MyApp.pm l.
>> 20
>> [9072] debug @0.010818> [hit #1]*My Log 2:  in MyApp\lib/MyApp.pm l. 21*
>> [9072]  core @0.015854> [hit #1]response: 200 in
>> /Perl/site/lib/Dancer/Handler.pm l. 179
>>
>> The problem is that the file is created with the correct name in the
>> correct folder (MyApp/UPLOADS/test) but it is always empty (0 size). No
>> other warnings or errors, but I do see an issue in the output (marked in
>> bold - 2nd custom debug line). Any ideas?
>>
>> Thank you in advance for your time!
>>
>> Regards,
>>
>> Fotis
> --
> Curtis Jewell
> csjewell at cpan.org           http://csjewell.dreamwidth.org/
> perl at csjewell.fastmail.us   http://csjewell.comyr.org/perl/
>
> "Your random numbers are not that random" -- perl-5.10.1.tar.gz/util.c
>
> Strawberry Perl for Windows betas: http://strawberryperl.com/beta/
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

-- 
Fotis E. Psomopoulos
PhD, Software Engineer
Intelligent Systems and Software Engineering Lab
Department of Electrical and Computer Engineering
Aristotle University of Thessaloniki
Thessaloniki 54124, Greece

Phone: +30 2310 99 6349
Fax  : +30 2310 99 6398
Email: fpsom at issel.ee.auth.gr
Site : http://fotis.ee.auth.gr



More information about the dancer-users mailing list