2016-04-25 15 views
0

ノードエクスプレスでconnect-busboyを使用して写真をアップロードして登録フォームを作成しようとしました。私はマルチパート/フォームデータサーバーを使用してフォームの他のテキストフィールドを読み取ることはありません。誰か助けてください。ノードエクスプレスフォームの登録ファイルのアップロードが動作しません

私のヒスイのファイルは私の登録スクリプトは、

form(class='form-signin', action='/s/upload', method='POST', enctype='multipart/form-data') 

          input(type='text', name='classname', class='form-control', placeholder='Classname',required) 
          input(type='text', name='subject', class='form-control', placeholder='Subject',required) 
          input(type='text', name='chapter', class='form-control', placeholder='Chapter',required) 
          input(type='text', name='module', class='form-control', placeholder='Module',required) 
          input(type='text', name='name', class='form-control', value = user.username,required) 
          input(type='file', name='thumbnail', class='form-control') 
          input(type='text', name='regid', class='form-control',value = "#{user._id}") 

          button(class='btn btn-lg btn-primary btn-block', type='submit') Register 
          span.clearfix 
        #message 
         if message 
          h1.text-center.error-message #{message} 

で、

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

    { 

    console.log("help..........."+req.body.chapter); 
    console.log("Got a POST request for the homepage"); 
    var ar =dirname+'/uploads/'+req.body.thumbnail; 
    var person = new Upd({ 
     classname: req.body.classname, 
     subject: req.body.subject, 
     chapter: req.body.chapter, 
     module: req.body.module, 
     name: req.body.name, 
     thumbnail: req.body.thumbnail, 
     filedtls: ar, 
     regid: req.body.regid 
     }); 

    person.save(function (error, data){ 
     if(error) {throw error; } 

     }); 

    var fstream; 
    req.pipe(req.busboy); 
    req.busboy.on('file', function (fieldname, file, filename) { 
     console.log("Uploading: " + filename); 
     console.log("Uploading: " + dirname); 

    fstream = fs.createWriteStream(dirname + '/uploads/' + filename); 
    file.pipe(fstream); 

    fstream.on('close', function() {  
     console.log("Upload Finished of " + filename); 
     console.log("file lo " + ar); 
     res.redirect('/home');   //where to go next 
    }); 
}); 
}); 
+0

通常、それは、マルチパート/フォームの - データは複数の部分/フォームデータではありません。また、それを行うために使用するコードを私たちに教えてもらうか、私たちはあなたを助けることができません。 – jaumard

答えて

0

ドキュメントはあなたが追加する必要がフィールドを取得するために言う:

req.busboy.on('file', function (fieldname, file, filename) { 
    console.log("Uploading: " + filename); 
    console.log("Uploading: " + dirname); 
req.busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) { 
     console.log('Field [' + fieldname + ']: value: ' + inspect(val)); 
    }); 
req.pipe(req.busboy); 
+0

私はそれを試しましたが、まだ問題があります。検査で定義されていないエラーを示しています。 – jicks

+0

私の編集を参照してください。 req.pipeはbusboy.onの後にする必要があります – jaumard

関連する問題