2017-07-26 2 views
0

hinzufügen Ich bin neu in Node.JS Entwicklung. Vor kurzem habe ich dieses Problem zu kämpfen: Ich möchte Foto in "/ uploads" Verzeichnis in meinem Projekt hochladen. Ich habe das Foto alleine hinzugefügt. Aber wenn es darum geht, einen Foto-Server hinzuzufügen und seinen Standortpfad mit der Eigentümer-ID und Beschreibung des Fotos zu Mysql DB zu speichern, habe ich es nicht geschafft. Ich weiß, dass Multer nur mehrteilige Daten akzeptiert.Wie Standort Pfad zu Mysql DB mit Hilfe von Multer in Node.JS

Hier ist mein node.js Code

var models = require('../../models'); 
var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 

var app = express(); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.json({limit:'50mb'})); 
app.use(bodyParser.urlencoded({extended:true, limit:'50mb'})); 

const uuidv1 = require('uuid/v1'); 
var owner_id; 
var description; 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'uploads/') 
    }, 
    filename: function (req, file, cb) { 
     const photo_id = uuidv1(); 
     cb(null, photo_id + '.jpg'); 
     addPhotoToDb(photo_id,owner_id,description); 
    } 
}); 

function addPhotoToDb(photo_id,owner_id,description) { 
    models.PHOTOS.create({ 
     photo_id: photo_id, 
     description: description, 
     owner_id: owner_id, 
     location_path: 'uploads/' + photo_id + '.jpg' 
    }) 
} 

var upload = multer({ storage: storage }).single('photo'); 

router.post('/upload', function (req, res) { 
    //This part is problematic I tried so many things   
    //owner_id=req.files 
    //description=req.files 
    upload(req, res, function (err) { 
     if (err) { 
     } 

     res.json({ 
      success: true, 
      message: 'Image uploaded!' 
     }); 
    }) 
}); 

module.exports = router; 

Auch in Postman Ich schicke Anfrage wie folgt aus: https://i.stack.imgur.com/04Qz1.png

Antwort

0

In Ihrem Screenshot Sie den "Körper" Tab zeigen. Auf der linken Seite befindet sich die Registerkarte "Kopfzeilen". Klicken Sie darauf und prüfen Sie, ob der Inhaltstyp "multipart/form-data" lautet, da multer keine Daten verarbeitet, die nicht zu diesem Inhaltstyp gehören.

+0

Die andere seltsame Tatsache, wenn ich Multipart/Form-Daten wählen, gibt es nichts passiert. Wenn ich keinen Inhaltstyp wähle, funktioniert es. https://i.imgur.com/83QSjKg.png –

+0

Vielleicht hängt es von der Version des Postboten ab, aber was Sie sicher überprüfen können, ist, das Protokoll zu loggen, was der Wert von req.headers ['content-type'] ist der Callback der Funktion Upload wenn Sie nichts als "Content-Type" setzen. –