Загрузка изображений с использованием Node.js, Express и Mongoose - PullRequest
101 голосов
/ 01 марта 2011

Пожалуйста, рассмотрите новые ответы, которые содержат более актуальную информацию, поскольку за эти годы все изменилось!

Поскольку многие новые библиотеки Node.js быстро оказываются устаревшими, иВ любом случае, это относительно немного примеров, которые я хочу задать о загрузке изображений с помощью:

  • Node.js (v0.4.1)
  • Express (1.0.7)
  • Mongoose(1.1.0).

Как другие это сделали?

Я обнаружил: node-formidable , но я новичок в загрузке изображений вОбщее, поэтому я хочу изучить общие вещи и способы сделать это с помощью Node.js и Express.

Ответы [ 12 ]

0 голосов
/ 11 октября 2016

Мой метод для многократной загрузки файла:

Узлы:

router.post('/upload', function(req , res) {

var multiparty = require('multiparty');
var form = new multiparty.Form();
var fs = require('fs');

form.parse(req, function(err, fields, files) {  
    var imgArray = files.imatges;


    for (var i = 0; i < imgArray.length; i++) {
        var newPath = './public/uploads/'+fields.imgName+'/';
        var singleImg = imgArray[i];
        newPath+= singleImg.originalFilename;
        readAndWriteFile(singleImg, newPath);           
    }
    res.send("File uploaded to: " + newPath);

});

function readAndWriteFile(singleImg, newPath) {

        fs.readFile(singleImg.path , function(err,data) {
            fs.writeFile(newPath,data, function(err) {
                if (err) console.log('ERRRRRR!! :'+err);
                console.log('Fitxer: '+singleImg.originalFilename +' - '+ newPath);
            })
        })
}
})

Убедитесь, что ваша форма имеет enctype = "multipart / form-data"

Надеюсь, это поможет вам;)

0 голосов
/ 08 июля 2014

Вот способ загрузить ваши изображения с помощью огромного пакета, который рекомендуется использовать вместо bodyParser в более поздних версиях Express. Это также включает возможность изменять размеры ваших изображений на лету:

С моего сайта: Загрузка и изменение размера изображений (на лету) с Node.js и Express .

Вот суть:

var express = require("express"),
app = express(),
formidable = require('formidable'),
util = require('util')
fs   = require('fs-extra'),
qt   = require('quickthumb');

// Use quickthumb
app.use(qt.static(__dirname + '/'));

app.post('/upload', function (req, res){
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files) {
    res.writeHead(200, {'content-type': 'text/plain'});
    res.write('received upload:\n\n');
    res.end(util.inspect({fields: fields, files: files}));
  });

  form.on('end', function(fields, files) {
    /* Temporary location of our uploaded file */
    var temp_path = this.openedFiles[0].path;
    /* The file name of the uploaded file */
    var file_name = this.openedFiles[0].name;
    /* Location where we want to copy the uploaded file */
    var new_location = 'uploads/';

    fs.copy(temp_path, new_location + file_name, function(err) {  
      if (err) {
        console.error(err);
      } else {
        console.log("success!")
      }
    });
  });
});

// Show the upload form 
app.get('/', function (req, res){
  res.writeHead(200, {'Content-Type': 'text/html' });
  /* Display the file upload form. */
  form = '<form action="/upload" enctype="multipart/form-data" method="post">'+ '<input name="title" type="text" />
  '+ '<input multiple="multiple" name="upload" type="file" />
  '+ '<input type="submit" value="Upload" />'+ '</form>';
  res.end(form); 
}); 
app.listen(8080);

ПРИМЕЧАНИЕ. Для быстрого изменения размера большого пальца требуется Image Magick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...