2017-07-26 91 views
0

我是Node.JS開發人員中的新成員。最近我一直在努力解決這個問題:我想將照片上傳到我的項目中的「/ uploads」目錄中。我已經單獨添加了照片。但是,當它添加照片服務器並將照片所有者ID和描述保存到Mysql數據庫時,我沒有做到這一點。我知道Multer只接受多部分形式的數據。如何在Node.JS中使用Multer將位置路徑添加到Mysql數據庫

這裏是我的Node.js代碼

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; 

此外,在郵差,我發送請求這樣的: https://i.stack.imgur.com/04Qz1.png

回答

0

在你的截圖中,你展現了「身體」選項卡。在左邊有「標題」標籤。點擊它並檢查你是否將內容類型設置爲「multipart/form-data」,因爲multer不會處理任何不屬於此內容類型的數據。

+0

另一個奇怪的事實是,當我選擇multipart/form-data時沒有任何反應。當我選擇什麼內容類型它的作品。 https://i.imgur.com/83QSjKg.png –

+0

也許它取決於郵差的版本,但你可以肯定地檢查的是控制檯日誌req.headers ['content-type']的值是什麼後當您將任何內容放入「content-type」時,函數上傳的回調。 –

相關問題