Advertisement
GreenRaccoon23

Blueimp File Upload to S3

Nov 15th, 2016
1,149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.95 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <title>Blueimp File Upload to S3</title>
  5.  
  6.     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  7.     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
  8.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.14.0/css/jquery.fileupload-ui.css" integrity="sha256-ifT1V9+cbcwQlKPmG5IQAjw8d3EWNOD/NJyJ7BBdDK8=" crossorigin="anonymous" />
  9.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.14.0/css/jquery.fileupload.css" integrity="sha256-imNlcy7z1wzkld49jVqMmBW2xMSDo6M+ibveWDltwfc=" crossorigin="anonymous" />
  10.  
  11.     <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
  12.     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
  13.     <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.14.0/js/vendor/jquery.ui.widget.js" integrity="sha256-CvqMlHtDX8dDgshwl03tVwvzncqqMKN0FLzZrNap4+I=" crossorigin="anonymous"></script>
  14.     <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.14.0/js/jquery.iframe-transport.js" integrity="sha256-crfsFqVM6OjkK4bc0XepM2rcSNZijer+t4QvBg5K0Og=" crossorigin="anonymous"></script>
  15.     <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.14.0/js/jquery.fileupload.js" integrity="sha256-VLqHfBaZnpwDmjmdAKAt/4raSYcfh7OzImUdRor26Dc=" crossorigin="anonymous"></script>
  16.  
  17.     <style type="text/css">
  18.     .btn-file input[type=file] {
  19.         position: absolute;
  20.         opacity: 0;
  21.     }
  22.     </style>
  23.  
  24.     <script type="text/javascript">
  25.     $(function() {
  26.         $(':file').each(function(i, el) {
  27.  
  28.             var fileInput = $(el);
  29.             var form = fileInput.parents('form:first');
  30.  
  31.             fileInput.fileupload({
  32.                 forceIframeTransport: true,
  33.                 autoUpload: true,
  34.                 singleFileUploads: true, //default anyway
  35.                 add: function(event, data) {
  36.                     var files = data.files || [];
  37.                     var nextInQueue = files[0]; //this is a queue, not a list
  38.                     console.log('nextInQueue:', nextInQueue);
  39.                     if (!nextInQueue) return;
  40.  
  41.                     var fileData = {name: nextInQueue.name, mime: nextInQueue.type, size: nextInQueue.size};
  42.  
  43.                     $.ajax({
  44.                         url: '/s3stuff',
  45.                         type: 'POST',
  46.                         dataType: 'json',
  47.                         data: {'file': fileData},
  48.                         async: false,
  49.                         success: function(res) {
  50.                             form.find('input[name="key"]').val(res.key);
  51.                             form.find('input[name="AWSAccessKeyId"]').val(res.AWSAccessKeyId);
  52.                             form.find('input[name="policy"]').val(res.policy);
  53.                             form.find('input[name="signature"]').val(res.signature);
  54.                             form.find('input[name="acl"]').val(res.acl);
  55.                             form.find('input[name="success_action_status"]').val(res.success_action_status);
  56.                             form.find('input[name="Content-Type"]').val(nextInQueue.type);
  57.                             form.attr('action', res.url);
  58.  
  59.                             data.submit(); //why is this submitting all files at once?
  60.                         }
  61.                     });
  62.                 },
  63.                 fail: function(err) {
  64.                     console.log('err:', err.stack);
  65.                 }
  66.             });
  67.         });
  68.     });
  69.     </script>
  70. </head>
  71.  
  72. <body>
  73. <div class="container">
  74.  
  75.     <div class="page-header">
  76.         <h2>Blueimp File Upload to S3</h2>
  77.     </div>
  78.  
  79.     <div class="row">
  80.         <div class="col-xs-12">
  81.             <form class="form-horizontal" role="form" method="POST" enctype="multipart/form-data">
  82.                 <div class="form-group">
  83.                     <div class="col-xs-12">
  84.                         <div class="input-group">
  85.                             <label class="input-group-btn" for="file">
  86.                                 <span class="btn btn-primary btn-file">
  87.                                     <i class="fa fa-cloud-upload fa-lg" aria-hidden="true"></i> Choose File...
  88.                                     <input type="file" name="file" accept="image/jpeg,image/gif,image/png,application/pdf,image/tiff" tabindex="1">
  89.                                 </span>
  90.                             </label>
  91.                             <input type="text" class="form-control" readonly>
  92.                             <input type="hidden" name="key">
  93.                             <input type="hidden" name="AWSAccessKeyId">
  94.                             <input type="hidden" name="policy">
  95.                             <input type="hidden" name="signature">
  96.                             <input type="hidden" name="acl">
  97.                             <input type="hidden" name="success_action_status">
  98.                             <input type="hidden" name="Content-Type">
  99.                         </div>
  100.                     </div>
  101.                 </div>
  102.             </form>
  103.         </div>
  104.     </div>
  105.  
  106. </div>
  107. </body>
  108.  
  109. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement