2017-02-03 23 views
1

multerを使用して画像をアップロードします。しかし、それは動作していません。ここで何が間違っていますか?Node.jsにmulterを使ってファイルをアップロードするには?

このコードはルートファイルにあります。

var multer = require('multer'); 
var upload = multer({ dest: 'public/uploads/' }); 

これは私のポストルートです。

router.post('/addNewFood', upload.single('avatar'),function (req, res, next) { 
console.log(req.files); 
}); 
+0

http://lollyrock.com/articles/express4-file-upload/ –

+0

具体的なエラーはありますか? –

答えて

0

これは私のために働いてください。エクスプレスとノードを使用します。

var storage = multer.diskStorage({ 
 
    destination: function (req, file, cb) { 
 
    cb(null, 'public/uploads/') 
 
    }, 
 
    filename: function (req, file, cb) { 
 
    cb(null, file.originalname) 
 
    } 
 
}); 
 

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

 
router.post('/addNewFood', //Your authentication check,// 
 
    function (req, res, next) { 
 

 
    upload(req, res, function(err) { 
 
     if (err) { 
 
      res.redirect(req.headers.referer + "/error.html"); 
 
      return; 
 
     } 
 

 
     if (!req.files) { 
 
      res.redirect(req.headers.referer + "/error.html"); 
 
      return; 
 
     } else { 
 
      //Implement your own logic if needed. Like moving the file, renaming the file, etc. 
 
      res.redirect(req.headers.referer); 
 
     } 
 
    }); 
 
    } 
 
);

1

NPMは、あなたは、サーバー側では、 を以下の方法を試すことができます

--save multerをインストールしてくださいあなたはパッケージをインストールしてください、あなたのルートまたはコントローラファイルで、マルチターを設定してください:

var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/images/uploads') 
    }, 
    filename: function (req, file, cb) { 
     cb(null, Date.now() + '-' + file.originalname)  
    } 
}) 
var upload = multer({ storage: storage }); 

保存オブジェクトでは、 宛先はファイルがアップロードされる場所です。ですから、あなたのプロジェクトディレクトリに/ public/images/uploadsパスが作成されていることを確認してください。それ以外の場合は、ファイルパスを変更することができます。

また、ストレージオブジェクトfilenameには、アップロードされたファイル名が入ります。ここでは、元のファイル名で現在の時刻を追加して、すべてのファイル名を一意にします。ご希望のルーティングで今

は、

router.post('/', upload.single('image'), (req, res) => { 
    //here your other task. 
}); 

今すぐあなたのファイルがアップロードされているとします。クライアント側が同じ名前(この場合は「イメージ」)を使用していることを確認してください。

<input type="file" name="image" id="image" class='form-control'> 

これは1つのファイルのアップロード手順です。詳細については、複数のファイルについては

router.post('/', upload.array(), function (req, res, next) { 
    //your task goes here 
}); 

、このlinkを確認してください。

関連する問題