2016-08-10 6 views
0

はそこSummernoteファイルアップロードPHP側で取り扱うことができるかの、あまりにも多くのソリューションがありますが、私はそこに、単一のまともな解決策を見つけることができませんでしたNode.jsでどのように扱うことができるかを示していますSummernoteの画像+ Node.jsの(Express.js)

私のJavascriptの

$(document).ready(function() { 
    // $('#summernote').summernote(); 

    $('#summernote').summernote({ 
     height: 590, 
     focus: true, 
     callbacks: {           
      onImageUpload : function(file, editor, welEditable) { 
       saveFile(file[0], editor, welEditable); 
      } 
     }         
    }); 

    function saveFile(file, editor, welEditable){ 
     console.log(file) 
     data = new FormData(); 
     data.append("file", file); 
     $.ajax({ 
      data: data, 
      type: "POST", 
      url: "/save/wiki", 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(url) { 
       console.log(url) 
       editor.insertImage(welEditable, url); 
      } 
     }); 
    } 
}); 

app.js

var express  = require('express'); 
var bodyParser = require('body-parser'); 
var multer  = require('multer'); 
var path  = require('path'); 
var app   = express(); 


var jsonPrsr = bodyParser.json();           
var urlencodedPrsr = bodyParser.urlencoded({ extended: false });   
var routes = require('./routes')(app, jsonPrsr, urlencodedPrsr, multer); 
var port = process.env.PORT || 1337;          


app.listen(port, function(err){ 
    if(err){ 
     console.log("Server failed to start on port: "+port+". Description: "); 
     console.log(err); 
    }else console.log(port+'is ON') 
}); 

routes.js

module.exports = function(app, jsonParser, urlencodedParser, multer) { 
    app.post('/save/wiki', urlencodedParser, function(req, res){ 
     if(typeof req.body != 'undefined') 
      console.log(req.body); // THIS RETURNS {} ie. empty 
     var file_name = req.body.file; 
     var upload, 
      upload_destination = './public'; 
      storage = multer.diskStorage({         
       destination: function (req, file, callback) { 
        callback(null, upload_destination); 
        }, 
        filename: function (req, file, callback) { 
         callback(null, file.fieldname + '-' +Date.now()); 
        } 
      }); 

     upload = multer({ storage : storage}).single(file_name); 

     upload(req,res,function(err) { 
      if(err) 
       res.send("Error uploading file."); 
      else 
       res.send("File is uploaded"); 
      res.end(); 
     }); 
    }); 
} 

私の問題は

console.log(req.body);は空のオブジェクト{}を返しています。ファイルはありません。私は

は、ファイルをアップロードしたい

はディレクトリにSummernoteエディタで'./public'

をトリガし、誰が欠けているものを教えていただけますか?それともどこが間違っているのですか?

おかげ

+0

multerを間違って使用しています。ドキュメントをお読みください。これはミドルウェアとして使用されることを意図しています。 –

+0

私はmulterをチェックできましたが、私のサーバー側でアップロードされたファイルを取得していません。 {0}をリクエストしています。 –

+0

multerを正しく設定すると、ファイルは 'req.body'ではなく' req.file(s) 'にあります。 –

答えて

0

、ファイルをアップロードするいくつかの良い作業例をthisを試してみてください。

var express = require('express'), 
    multer = require('multer') 

var app = express() 
app.use(multer({ dest: './uploads/'})) 

app.get('/', function(req, res){ 
    res.send('hello world'); 
}); 

app.post('/', function(req, res){ 
    console.log(req.body) // form fields 
    console.log(req.files) // form files 
    res.status(204).end() 
}); 

app.listen(3000); 
関連する問題