MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Unggahan File Tumpukan BERARTI

Saya baru-baru ini melakukan sesuatu seperti ini. Saya menggunakan angular-file-upload . Anda juga ingin node-multiparty untuk titik akhir Anda untuk mengurai data formulir. Kemudian Anda dapat menggunakan s3 untuk mengunggah file ke s3.

Ini beberapa kode [diedit] saya.

Template Sudut

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

Pengendali Sudut

$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);
  });
};

Rute

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);
      });
    });
  });
}

Saya mengubah ini dari kode saya, jadi mungkin tidak berhasil, tapi semoga bermanfaat!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara mendapatkan kembali dokumen Asli setelah agregasi

  2. Ubah array string menjadi array Id objek

  3. Bagaimana cara mendapatkan daftar hanya ObjectId yang menggunakan pymongo?

  4. otentikasi rmongodb selalu gagal

  5. Otomatis memadatkan ruang yang dihapus di mongodb?