使用 multer 将上传的文件保存在项目目录中
saving uploaded file in project directory using multer
当我提供目标路径时,我能够使用名为 multer.but 的中间件在 node.js 中上传文件:'/uploads/'。文件保存在 c: 盘
var express = require('express');
var router = express.Router();
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
var upload = multer({storage: storage});
var emp = require('../models/employees.js');
router.post('/', upload.single('file'), function(req,res,next){
console.log("Server: got file ");
console.log(req.file);
var upl = new emp({picture: req.file.originalname});
upl.save(function(err,docs) {
if (err) {
console.log(err);
}
res.json(docs);
});
});
module.exports = router;
我试过给一个长字符串路径太像了
'/users/user/webstormprojects/template/public/uploads/image/'
但它以内部服务器错误结束
有人请帮助我,这样我就可以将上传的文件保存到我的项目目录中。
尝试使用路径 Module.And 然后使用 _dirname。请参阅下面的代码
</p>
<pre><code>var path = require('path')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path.join(__dirname + '/uploads/'))
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
这应该可以解决您的问题。 _dirname 将为您提供您正在使用的目录的访问权限。
在您的 app.js 或 index.js 文件中添加这一行
app.use(express.static(__dirname + '/public', { maxAge: week }));
然后像这样在 /uploads 中上传文件
destination: function (req, file, callback) {
callback(null, './public/uploads');
},
注意:确保 public 文件夹中有上传文件夹
当我提供目标路径时,我能够使用名为 multer.but 的中间件在 node.js 中上传文件:'/uploads/'。文件保存在 c: 盘
var express = require('express');
var router = express.Router();
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
var upload = multer({storage: storage});
var emp = require('../models/employees.js');
router.post('/', upload.single('file'), function(req,res,next){
console.log("Server: got file ");
console.log(req.file);
var upl = new emp({picture: req.file.originalname});
upl.save(function(err,docs) {
if (err) {
console.log(err);
}
res.json(docs);
});
});
module.exports = router;
我试过给一个长字符串路径太像了
'/users/user/webstormprojects/template/public/uploads/image/'
但它以内部服务器错误结束 有人请帮助我,这样我就可以将上传的文件保存到我的项目目录中。
尝试使用路径 Module.And 然后使用 _dirname。请参阅下面的代码
</p>
<pre><code>var path = require('path')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path.join(__dirname + '/uploads/'))
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
这应该可以解决您的问题。 _dirname 将为您提供您正在使用的目录的访问权限。
在您的 app.js 或 index.js 文件中添加这一行
app.use(express.static(__dirname + '/public', { maxAge: week }));
然后像这样在 /uploads 中上传文件
destination: function (req, file, callback) {
callback(null, './public/uploads');
},
注意:确保 public 文件夹中有上传文件夹