2017-07-27 9 views
0

入力画像の保存type="file"から保存しますが、どうすればいいのか分かりません。まず、グローバルパスを保存しようとしましたが、これはセキュリティの面では不可能です。私は正しいかどうかは分かりません。私のコードで見て、いくつかのアドバイスをくれノードとエクスプレスを使用してmongooseのストローク画像

htmlコード教えてください:

api.js

router.post('/courses', function(req, res){ 
    var course = new Product(); 
    course.imagePath = req.files.image; 
     course.save(function(err){ 
      if(err){ 
       console.log(err); 
      } else { 
       res.json({success:true, message:'saved'}); 
      } 
     }) 
    }); 

サービス

userFactory.createNewCourse = function(productData){ 
    return $http.post('/api/courses', productData) 
} 

スキーマ

var productSchema = new Schema({ 
imagePath: { 
    type: String, 

}, 
}); 

module.exports = mongoose.model('Product', productSchema); 
を上記のコードで

productは、あなたが最初にあなたがAWS S3あなたはjavascriptのSDK AWSを使用して、それを保存することができますし、ファイルが正常にその後、S3にアップロードされたときのような任意のクラウドに画像を保存しなければならない二つの方法でこれを達成することができますcontrollerAs

+0

ファイルを保存する必要があります。https://github.com/expressjs/multerを確認してから、イメージ名またはパスをデータベースに保存してください。 – yBrodsky

答えて

0

ですあなたのmongodbに公開URLを保存します。この場合、AWS javascript SDKを習得しなければなりません。また、アップロードしてイメージを保存する他のクラウドAPIを見つけることもできます。

もう1つの方法は、画像をbase64文字列に変換し、その文字列をmongodbに保存することですが、これは巨大な文字列になります。画像をbase64に簡単に変換し、base64文字列からjavascriptに変換することができます。

エクスプレスサーバーを使用している場合は、デフォルトではエクスプレスでパブリックフォルダが提供されるため、abc.jpgという名前の画像をパブリックフォルダに保存すると、localhost:3000/api/abc.jpgと簡単にアクセスできます。エクスプレスサーバーと同じポートであることを確認してください。

+1

私がexpressを使用している場合は、multerミドルウェアを使用する必要がありますか? –

+1

はいMulterが動作し、APIを使用してアクセスできるデータベースとイメージ名をリンクする –

+0

あなたの意見ではどの方法が良いですか?まず、mongodbでクラウドと次のファイルを保存し、mongodbでbase64のコーディングを使用します。 –

関連する問題