MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

СРЕДНО Качване на стекови файлове

Наскоро направих нещо подобно. Използвах angular-file-upload . Също така ще искате node-multiparty за вашата крайна точка да анализира данните от формуляра. Тогава можете да използвате s3 за качване на файла в s3.

Ето част от моя [редактиран] код.

Шаблон на Angular

<button>
  Upload <input type="file" ng-file-select="onFileSelect($files)">
</button>

Ъглов контролер

$scope.onFileSelect = function(image) {
  $scope.uploadInProgress = true;
  $scope.uploadProgress = 0;

  if (angular.isArray(image)) {
    image = image[0];
  }

  $scope.upload = $upload.upload({
    url: '/api/v1/upload/image',
    method: 'POST',
    data: {
      type: 'profile'
    },
    file: image
  }).progress(function(event) {
    $scope.uploadProgress = Math.floor(event.loaded / event.total);
    $scope.$apply();
  }).success(function(data, status, headers, config) {
    AlertService.success('Photo uploaded!');
  }).error(function(err) {
    $scope.uploadInProgress = false;
    AlertService.error('Error uploading file: ' + err.message || err);
  });
};

Маршрут

var uuid = require('uuid'); // https://github.com/defunctzombie/node-uuid
var multiparty = require('multiparty'); // https://github.com/andrewrk/node-multiparty
var s3 = require('s3'); // https://github.com/andrewrk/node-s3-client

var s3Client = s3.createClient({
  key: '<your_key>',
  secret: '<your_secret>',
  bucket: '<your_bucket>'
});

module.exports = function(app) {
  app.post('/api/v1/upload/image', function(req, res) {
    var form = new multiparty.Form();
    form.parse(req, function(err, fields, files) {
      var file = files.file[0];
      var contentType = file.headers['content-type'];
      var extension = file.path.substring(file.path.lastIndexOf('.'));
      var destPath = '/' + user.id + '/profile' + '/' + uuid.v4() + extension;

      var headers = {
        'x-amz-acl': 'public-read',
        'Content-Length': file.size,
        'Content-Type': contentType
      };
      var uploader = s3Client.upload(file.path, destPath, headers);

      uploader.on('error', function(err) {
        //TODO handle this
      });

      uploader.on('end', function(url) {
        //TODO do something with the url
        console.log('file opened:', url);
      });
    });
  });
}

Промених това от моя код, така че може да не работи веднага, но се надявам, че е полезно!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Десериализирайте обект като интерфейс с MongoDB C# драйвер

  2. Неуспех на MongoDB mongorestore:локал::фасет::_S_create_c_locale името не е валидно

  3. Как да филтрирате по диапазон от месеци и години в Mongodb

  4. Задайте парола към базата данни mongo на meteor

  5. ограничаване за съхраняване на дублирани стойности в mongodb