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

Lewati file dari Amazon S3 melalui server NodeJS tanpa memaparkan URL S3?

Kombinasi middleware ekspres (untuk memeriksa otorisasi pengguna yang membuat permintaan) dan penggunaan SDK AWS Simpul harus melakukan trik.

Berikut adalah contoh lengkap menggunakan multer untuk unggahan.

var express = require('express');
var app = express();
var router = express.Router();
var multer = require('multer');
var upload = multer({
  dest: "tmp/"
});
var fs = require('fs');
var async = require('async');
var AWS = require('aws-sdk');
// Configure AWS SDK here
var s3 = new AWS.s3({
  params: {
    Bucket: 'xxx'
  }
});

/**
 * Authentication middleware
 *
 * It will be called for any routes starting with /files
 */
app.use("/files", function (req, res, next) {
  var authorized = true; // use custom logic here
  if (!authorized) {
    return res.status(403).end("not authorized");
  }
  next();
});

// Route for the upload
app.post("/files/upload", upload.single("form-field-name"), function (req, res) {
  var fileInfo = console.log(req.file);
  var fileStream = fs.readFileSync(fileInfo.path);
  var options = {
    Bucket: 'xxx',
    Key: 'yyy/'+fileName,
    Body: fileStream
  };

  s3.upload(options, function (err) {
    // Remove the temporary file
    fs.removeFileSync("tmp/"+fileInfo.path); // ideally use the async version
    if (err) {
      return res.status(500).end("Upload to s3 failed");
    }
    res.status(200).end("File uploaded");
  });
});

// Route for the download
app.get("/files/download/:name", function (req, res) {
  var fileName = req.params.name;
  if (!fileName) {
    return res.status(400).end("missing file name");
  }
  var options = {
    Bucket: 'xxx',
    Key: 'yyy/'+fileName
  };
  res.attachment(fileName);
  s3.getObject(options).createReadStream().pipe(res);
});

app.listen(3000);

Jelas ini hanya sebagian diuji dan tidak memiliki penanganan kesalahan yang tepat - tetapi mudah-mudahan ini akan memberi Anda gambaran kasar tentang cara mengimplementasikannya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregasi Kelompok Usia Mongo

  2. Menggunakan agregasi berlipat ganda dengan MongoDB

  3. MongoDB db.copyDatabase gagal pada yang tidak sah

  4. Bagaimana cara membuat kueri penyortiran khusus di boot musim semi untuk repositori mongo db?

  5. MongoCursorException - Kursor tidak ditemukan (Pengandar PHP MongoDB)