Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用multer(nodejs multer)和AWS S3时,如何减少图像上载时间_Node.js_Mongodb_Image Uploading_Aws Sdk_Multer - Fatal编程技术网

Node.js 使用multer(nodejs multer)和AWS S3时,如何减少图像上载时间

Node.js 使用multer(nodejs multer)和AWS S3时,如何减少图像上载时间,node.js,mongodb,image-uploading,aws-sdk,multer,Node.js,Mongodb,Image Uploading,Aws Sdk,Multer,我正在使用Node.js、MongoDB和AWS为摄影师和模特开发一项服务 为了开发照片上传功能,我使用了三个模块,如multer、multer-s3、aws sdk。过程如下 var express = require('express'); var router = express.Router(); var db = require('../models/db'); require('../models/bookmodel'); require('../models/usermodel'

我正在使用Node.js、MongoDB和AWS为摄影师和模特开发一项服务

为了开发照片上传功能,我使用了三个模块,如multer、multer-s3、aws sdk。过程如下

var express = require('express');
var router = express.Router();

var db = require('../models/db');
require('../models/bookmodel');
require('../models/usermodel');
var BookModel = db.model('Book');
var UserModel = db.model('User');

// 이미지 업로드 셋팅
var multer = require('multer');
var multerS3 = require('multer-s3');
var AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-1';
var s3 = new AWS.S3();

var upload = multer({
  storage: multerS3({
    s3 : s3,
    bucket : 'mocatest',
    acl : 'public-read',
    key : function(req, file, callback) {
      var tmp = file.mimetype.split('/')[1]; // file.mimetype
      if (tmp == 'jpeg') { tmp = 'jpg' }
      var ext = "." + tmp;
      var keyword = "Moca_Photo_";
      var newname = keyword + Date.now().toString() + ext;
      callback(null, newname);
    }
  })
});

// 3-11. Uploading a book(사진 업로드하기)
router.post('/', upload.single('img'), function(req, res, next) {
  var token_user_id = req.decoded.user_id;

  // imgSave function start
  var imgSave = function() {
    var book_img = req.file.location;
    var book_desc = req.body.book_desc;

    var data = new BookModel({
      user_id   : token_user_id,
      book_img  : book_img,
      book_desc : book_desc
    });

    data.save(function(err, docs) {
      if (err) { return next(err); }
      res.json({ success: 1, message: "photo is uploaded" });
    });
  };
  // imgSave function end

  UserModel.findOne({ user_id: token_user_id }, function(err, docs) {
    if (err) { return next(err); }
    if (docs.user_type == "M" || docs.user_type == "P") {
      imgSave();
    } else {
      res.json({ success: 0, message: "You should be registered as a model or photographer first" });
    }
  });
});
  • 从客户端获取单个图像和相关信息
  • 使用multer将其上传至AWS s3
  • 确定用户是模特还是摄影师
  • 保存文件信息,包括图像url
  • 不幸的是,我发现上传图像时,需要1秒到5秒的时间

    因此,我希望你让我知道如何减少时间消耗(如何在短时间内给客户结果)

    谢谢。我的代码如下

    var express = require('express');
    var router = express.Router();
    
    var db = require('../models/db');
    require('../models/bookmodel');
    require('../models/usermodel');
    var BookModel = db.model('Book');
    var UserModel = db.model('User');
    
    // 이미지 업로드 셋팅
    var multer = require('multer');
    var multerS3 = require('multer-s3');
    var AWS = require('aws-sdk');
    AWS.config.region = 'ap-northeast-1';
    var s3 = new AWS.S3();
    
    var upload = multer({
      storage: multerS3({
        s3 : s3,
        bucket : 'mocatest',
        acl : 'public-read',
        key : function(req, file, callback) {
          var tmp = file.mimetype.split('/')[1]; // file.mimetype
          if (tmp == 'jpeg') { tmp = 'jpg' }
          var ext = "." + tmp;
          var keyword = "Moca_Photo_";
          var newname = keyword + Date.now().toString() + ext;
          callback(null, newname);
        }
      })
    });
    
    // 3-11. Uploading a book(사진 업로드하기)
    router.post('/', upload.single('img'), function(req, res, next) {
      var token_user_id = req.decoded.user_id;
    
      // imgSave function start
      var imgSave = function() {
        var book_img = req.file.location;
        var book_desc = req.body.book_desc;
    
        var data = new BookModel({
          user_id   : token_user_id,
          book_img  : book_img,
          book_desc : book_desc
        });
    
        data.save(function(err, docs) {
          if (err) { return next(err); }
          res.json({ success: 1, message: "photo is uploaded" });
        });
      };
      // imgSave function end
    
      UserModel.findOne({ user_id: token_user_id }, function(err, docs) {
        if (err) { return next(err); }
        if (docs.user_type == "M" || docs.user_type == "P") {
          imgSave();
        } else {
          res.json({ success: 0, message: "You should be registered as a model or photographer first" });
        }
      });
    });