On 07/30/2013 06:27 PM, 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);
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?
Why don't you use the functions of the upload object to store the uploaded file? Also you open the file for reading, not for writing. Regards Racke -- LinuXia Systems => http://www.linuxia.de/ Expert Interchange Consulting and System Administration ICDEVGROUP => http://www.icdevgroup.org/ Interchange Development Team