13

現在socket.io、進行状況バーでビデオをアップロードするために使用しています。チュートリアルはこちら

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-resumable-video-uploade-in-node-js/

Internet Explorer はこの方法をサポートしていませんが、すべてのブラウザでビデオをアップロードする必要があります。

エクスプレスドキュメントを確認しました。Express は (プログレス イベントがある) に基づいているのでnode-formidable、プログレス バーを使用してアップロード システムを構築する方法があると思いますよね? 方法がわかりません!

node-formidable IE は有効になっていますか?

プログレスバー付きの純粋なespress.jsでファイルアップロードシステムを構築する方法はありますか?

4

2 に答える 2

1

xhr.upload 進行状況イベントで実行できます。html5から対応しています。

例: https://github.com/zeMirco/express-upload-progress

PHPではアップロード情報をセッションに添付できるので、html4でも動きますし、そのためのnodejs拡張機能もあるのかもしれません。ググってみます。

これによると: How to do upload with express with node.js is there in express in express by file upload, そのため、実際の進行状況データを使用してセッションに変数を設定し、クライアント側から ajax で読み取ることができます。

于 2013-02-20T09:51:27.263 に答える
1

これは、angular js とng-file-uploadディレクティブを使用したjsfiddleです。

jsfiddle は画像とファイルに対して機能しますが、動画をアップロードするには、POST URL をサーバーに変更する必要があります。

//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>

于 2016-06-03T20:17:26.177 に答える