MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MEAN स्टैक फ़ाइल अपलोड

मैंने हाल ही में कुछ ऐसा ही किया है। मैंने angular-file-upload का इस्तेमाल किया . आपको नोड-मल्टीपार्टी भी चाहिए फॉर्म डेटा को पार्स करने के लिए आपके एंडपॉइंट के लिए। तब आप s3 का उपयोग कर सकते हैं फ़ाइल को s3 पर अपलोड करने के लिए।

ये रहा मेरा कुछ [संपादित] कोड।

कोणीय टेम्पलेट

<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. मोंगोडीबी $allElementsTrue

  2. मोंगोडीबी $atan

  3. मोंगोडब और मोंगोमैपर

  4. एक नेस्टेड सरणी के अंदर MongoDB क्वेरी

  5. मोंगोडब में खस्ता सरणी सहेजा जा रहा है