How to upload large file in express with progress bar? How to upload large file in express with progress bar? express express

How to upload large file in express with progress bar?


It can be done with the xhr.upload progress event. It is supported from html5.

For example:https://github.com/zeMirco/express-upload-progress

In php the upload information can be attached to the session, so it works with html4, maybe there is a nodejs extension for that too, I'll google it.

According to this:How to do upload with express in node.jsthere is a progress event in express by file upload, so you can set a variable in the session with the actual progress data, and read it with ajax from client side.


Here is the jsfiddle using angular js and ng-file-upload directive.

The jsfiddle works for images and files but to upload the videos you will have change the POST url to your server.

//inject angular file upload directives and services.var app = angular.module('fileUpload', ['ngFileUpload']);app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function($scope, Upload, $timeout) {  $scope.uploadFiles = function(file, errFiles) {    $scope.f = file;    $scope.errFile = errFiles && errFiles[0];    if (file) {      file.upload = Upload.upload({        url: 'https://angular-file-upload-cors-srv.appspot.com/upload',        data: {          file: file        }      });      file.upload.then(function(response) {        $timeout(function() {          file.result = response.data;        });      }, function(response) {        if (response.status > 0)          $scope.errorMsg = response.status + ': ' + response.data;      }, function(evt) {        file.progress = Math.min(100, parseInt(100.0 *          evt.loaded / evt.total));      });    }  }}]);
.thumb {  width: 24px;  height: 24px;  float: none;  position: relative;  top: 7px;}form .progress {  line-height: 15px;}.progress {  display: inline-block;  width: 100px;  border: 3px groove #CCC;}.progress div {  font-size: smaller;  background: orange;  width: 0;}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script><script src="https://angular-file-upload.appspot.com/js/ng-file-upload-shim.js"></script><script src="https://angular-file-upload.appspot.com/js/ng-file-upload.js"></script><body ng-app="fileUpload" ng-controller="MyCtrl">  <h4>Upload on file select</h4>  <button type="file" ngf-select="uploadFiles($file, $invalidFiles)"  ngf-max-height="1000" ngf-max-size="100MB">    Select File</button>  <br>  <br> File:  <div style="font:smaller">{{f.name}} {{errFile.name}} {{errFile.$error}} {{errFile.$errorParam}}    <span class="progress" ng-show="f.progress >= 0">          <div style="width:{{f.progress}}%"                 ng-bind="f.progress + '%'"></div>      </span>  </div>  {{errorMsg}}</body>