[dancer-users] Trouble in uploading file

Fotis E. Psomopoulos fpsom at issel.ee.auth.gr
Tue Jul 30 18:17:58 BST 2013


Dear Racke,

thank you for your response.

> 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 testhttp://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?

I have tried the following code:

put '/upload/:file' =>  sub {
     my $upload_dir = "c:/Fotis/INA-CERTH/Microme/PathTrace/WebApp/PathTraceWS/UPLOADS";
     my $filename = params->{file};
     my $uploadedFile = request->upload($filename);
     $uploadedFile->copy_to('$upload_dir');

     debug "My Log 1: " . params->{file};
     debug "My Log 2: " . ref($uploadedFile);

     return "DONE";
};

However, the problem is probably the same as before:
/
//request to PUT /upload/test crashed: Can't call method "copy_to" on an undefined value/

What I really cannot understand is why the second debug line returns empty (...ref($uploadedFile)...).


  
> Also you open the file for reading, not for writing.

Well that's embarrassing... However, I corrected it and the problem remains (for some reason, it doesn't get the file).

Thank you very much for your time!

Regards,

Fotis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20130730/567b76fb/attachment.htm>


More information about the dancer-users mailing list