2016-07-11 1 views
1

multiparty.Form() не работает. Я пытаюсь напечатать. (Например, 2,3,4)Node.js многопользовательская загрузка не работает

Вот мое изображение код загрузки:

app.post('/gallery/add',function(req, res,next) { 
var input = JSON.parse(JSON.stringify(req.body)); 
var multipart = require('connect-multiparty'); 
var multiparty = require('multiparty'); 
var format = require('util').format; 
var fs = require("fs"); 
var path = require('path'); 
var tempPath =req.files.image.path; 
var filename2 =req.files.image.originalFilename; 
req.getConnection(function (err, connection) { 
    console.log('1'); 
    var form = new multiparty.Form(); 
    var image; 
    var title; 
form.on('error', next); 
    form.on('close', function(err, fields, files){ 
     console.log('2'); 
     if(err) { 
     next(err); 
     console.log(err); 
    } else { 
    console.log('3'); 
     ins = fs.createReadStream(tempPath); 
     ous = fs.createWriteStream(__dirname + '/uploads/' + image.filename); 
     util.pump(ins, ous, function(err) { 
     if(err) { 
      next(err); 
     } else { 
      res.redirect('/#gallery/add'); 
      res.end(); 
     } 
     }); 
     //console.log('\nUploaded %s to %s', files.photo.filename, files.photo.path); 
     //res.send('Uploaded ' + files.photo.filename + ' to ' + files.photo.path); 
    } 
    res.send(format('\nuploaded %s (%d Kb) as %s' 
     , image.filename 
     , image.size/1024 | 0 
     , title)); 
    }); 
// listen on field event for title 
    form.on('field', function(name, val){ 

    console.log('4'); 
    if (name !== 'title') return; 
    title = val; 
    }); 

    // listen on part event for image file 
    form.on('part', function(part){ 
console.log('5'); 
    if (!part.filename) return; 
    if (part.name !== 'image') return part.resume(); 
    image = {}; 
    image.filename = part.filename; 
    image.size = 0; 
    part.on('data', function(buf){ 
     image.size += buf.length; 
    }); 
    }); 

    // parse the form 
    form.parse(req); 

    }); 
}); 

Похоже, что метод form.on не работает.

Куда я иду не так?

+0

вы можете мне сказать, в какой момент вашего код достигнет – Jain

+0

Да, только «1» печатает в этом – diksha

+0

использует это только после того, как консоли. var form = new multiparty.Form(); form.parse (req, function (err, fields, files) { res.writeHead (200, {'content-type': 'text/plain'}); res.write ('полученная загрузка: \ n \ n '); res.end (util.inspect ({поля: поля, файлы: файлы})); }); возвращение; – Jain

ответ

0

просто использовать:

// parse a file upload 
    var form = new multiparty.Form(); 

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

    return; 

Источник: https://www.npmjs.com/package/multiparty

+0

@diksha, попробуйте эту надежду, он предоставит некоторую ошибку, поэтому вы можете отлаживать больше form.on ('error', function (err) { console.log (err); }); – Jain

+0

Я могу получить доступ к файлам, но есть только имя и путь без каких-либо данных: файлы:% @ {fieldName: 'image', originalFilename: 'photo1.png', путь: '/ var/folders/x4/01z7j18d7vz8rxrgcxt2w9dm0000gn/T/OMTuSjvM_Oj9OeUr44z0Mzk4.png ', заголовки: {' content-disposition ':' form-data; Name = "изображение"; filename = "photo1.png" ', ' content-type ':' image/png '}, Размер: 152501} Знаете ли вы, как я могу получить доступ к данным изображения, представленным не только для того, чтобы их сохранить в база данных? –