2017-07-26 11 views
0

私はNode.JSの新機能です。最近、私はその問題に苦しんでいます:プロジェクトの "/ uploads"ディレクトリに写真をアップロードしたいと思います。私は写真だけを追加しました。しかし、それが写真サーバーを追加し、写真所有者のIDとMysql DBへの説明でその場所のパスを保存するに来たとき、私はそれを作っていませんでした。私は、マルチター形式のデータだけを受け入れることを知っています。Node.JSでMulterを使用してMysql DBにロケーションパスを追加するには

ここ

が私の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」に設定されていることを確認します。これは、このコンテンツタイプにないデータは処理しないためです。

+0

私がmultipart/form-dataを選択したときのもう一つの奇妙な事実は何も起こりません。私が何もコンテンツタイプを選択しないと、それは動作します。 https://i.imgur.com/83QSjKg.png –

+0

おそらくそれはpostmanのバージョンに依存するかもしれませんが、確かに確認できるのは、req.headers ['content-type']の値が後であることをログに記録することです何も "content-type"として置いたときに関数のコールバックがアップロードされます。 –

関連する問題