Snippets

Brian Medley File upload shimmy

Updated by Brian Medley

File shimmy_file_upload.pl Modified

  • Ignore whitespace
  • Hide word diff
 
 get '/' => 'form';
 
-get '/action' => sub {
-    my $c = shift;
-
-    $c->render(json => { url => 'http://127.0.0.1:3001/upload' });
-};
-
-post '/' => sub {
-    my $c = shift;
-
-    my $url = Mojo::URL->new('http://127.0.0.1:3001/upload');
-    
-    $c->res->code(307);
-    $c->redirect_to('http://127.0.0.1:3001/upload');
-};
-
 post '/upload' => sub {
   my $c = shift;
 
Updated by Brian Medley

File file_redirect.pl Deleted

  • Ignore whitespace
  • Hide word diff
-#!/opt/perl
-
-use Mojolicious::Lite;
-
-get '/' => 'form';
-
-post '/' => sub {
-    my $c = shift;
-
-    my $url = Mojo::URL->new('http://127.0.0.1:3001/upload');
-    
-    $c->res->code(307);
-    $c->redirect_to('http://127.0.0.1:3001/upload');
-};
-
-post '/upload' => sub {
-  my $c = shift;
-
-  # Check file size
-  return $c->render(text => 'File is too big.', status => 200)
-    if $c->req->is_limit_exceeded;
-
-  # Process uploaded file
-  return $c->redirect_to('form') unless my $example = $c->param('example');
-  my $size = $example->size;
-  my $name = $example->filename;
-  $c->render(text => "Thanks for uploading $size byte file $name.");
-};
-
-my $mode = shift(@ARGV);
-push(@ARGV, "daemon", "-l", 'http://*:3000') if "redirect" eq $mode;
-push(@ARGV, "daemon", "-l", 'http://*:3001') if "process" eq $mode;
-
-app->start;
-
-__DATA__
-
-@@ form.html.ep
-<!DOCTYPE html>
-<html>
-  <head><title>Upload</title></head>
-  <body>
-    %= form_for '/' => (enctype => 'multipart/form-data', method => 'POST') => begin
-      %= file_field 'example'
-      %= submit_button 'Upload'
-    % end
-  </body>
-</html>

File shimmy_file_upload.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/opt/perl
+
+use Mojolicious::Lite;
+
+get '/' => 'form';
+
+get '/action' => sub {
+    my $c = shift;
+
+    $c->render(json => { url => 'http://127.0.0.1:3001/upload' });
+};
+
+post '/' => sub {
+    my $c = shift;
+
+    my $url = Mojo::URL->new('http://127.0.0.1:3001/upload');
+    
+    $c->res->code(307);
+    $c->redirect_to('http://127.0.0.1:3001/upload');
+};
+
+post '/upload' => sub {
+  my $c = shift;
+
+  # Check file size
+  return $c->render(text => 'File is too big.', status => 200)
+    if $c->req->is_limit_exceeded;
+
+  # Process uploaded file
+  my $example = $c->req->upload('kartik-input-700[]') ;
+  my $size = $example->size;
+  my $name = $example->filename;
+
+  $c->render(json => {});
+};
+
+hook(after_build_tx => sub {
+    my ($tx, $app) = @_;
+
+    $tx->res->headers->header('Access-Control-Allow-Origin' => '*');
+});
+
+
+options '*' => sub {
+  my $self = shift;
+
+  $self->res->headers->header('Access-Control-Allow-Origin'=> '*');
+  $self->res->headers->header('Access-Control-Allow-Credentials' => 'true');
+  $self->res->headers->header('Access-Control-Allow-Methods' => 'GET, OPTIONS, POST, DELETE, PUT');
+  $self->res->headers->header('Access-Control-Allow-Headers' => 'Content-Type, X-CSRF-Token');
+  $self->res->headers->header('Access-Control-Max-Age' => '1728000');
+
+  $self->respond_to(any => { data => '', status => 200 });
+};
+
+my $mode = shift(@ARGV);
+push(@ARGV, "daemon", "-l", 'http://*:3000') if "display" eq $mode;
+push(@ARGV, "daemon", "-l", 'http://*:3001') if "process" eq $mode;
+
+app->start;
+
+# https://github.com/kartik-v/bootstrap-fileinput#manual-install
+
+__DATA__
+
+@@ form.html.ep
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Upload</title>
+    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
+    <link href="/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
+    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
+    <script src="/fileinput.min.js" type="text/javascript"></script>
+  </head>
+  <body>
+    <input id="input-700" name="kartik-input-700[]" type="file" multiple class="file-loading">
+    <script>
+    $("#input-700").fileinput({
+        uploadUrl: "http://127.0.0.1:3001/upload", // server upload action
+        uploadAsync: true
+    });
+    </script>
+  </body>
+</html>
Updated by Brian Medley

File file_redirect.pl Modified

  • Ignore whitespace
  • Hide word diff
 
     my $url = Mojo::URL->new('http://127.0.0.1:3001/upload');
     
+    $c->res->code(307);
     $c->redirect_to('http://127.0.0.1:3001/upload');
 };
 
Created by Brian Medley

File file_redirect.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/opt/perl
+
+use Mojolicious::Lite;
+
+get '/' => 'form';
+
+post '/' => sub {
+    my $c = shift;
+
+    my $url = Mojo::URL->new('http://127.0.0.1:3001/upload');
+    
+    $c->redirect_to('http://127.0.0.1:3001/upload');
+};
+
+post '/upload' => sub {
+  my $c = shift;
+
+  # Check file size
+  return $c->render(text => 'File is too big.', status => 200)
+    if $c->req->is_limit_exceeded;
+
+  # Process uploaded file
+  return $c->redirect_to('form') unless my $example = $c->param('example');
+  my $size = $example->size;
+  my $name = $example->filename;
+  $c->render(text => "Thanks for uploading $size byte file $name.");
+};
+
+my $mode = shift(@ARGV);
+push(@ARGV, "daemon", "-l", 'http://*:3000') if "redirect" eq $mode;
+push(@ARGV, "daemon", "-l", 'http://*:3001') if "process" eq $mode;
+
+app->start;
+
+__DATA__
+
+@@ form.html.ep
+<!DOCTYPE html>
+<html>
+  <head><title>Upload</title></head>
+  <body>
+    %= form_for '/' => (enctype => 'multipart/form-data', method => 'POST') => begin
+      %= file_field 'example'
+      %= submit_button 'Upload'
+    % end
+  </body>
+</html>
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.