使用 multer 上传文件
uploading file with multer
我是一个 js 新手,我目前正在尝试使用 multer 上传一些文件。
这是我的代码:
let express = require('express');
let im = require('imagemagick');
let gm = require("gm").subClass({
imageMagick: true
});
let multer = require('multer');
let app = express();
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
var upload = multer({storage: storage}).single('avatar');
app.post('/', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
res.json({
success: false,
message: 'error during uploading'
});
} else if (err) {
res.json({
success: false,
message: 'error during uploading'
});
}
res.json({
success: true,
message: 'Image uploaded'
});
})
})
app.listen(3000);
当我发送带有文件(表单数据)的 post-req 时,我收到一条成功消息,但是 没有创建包含该文件的文件夹:
post request
编辑:
我成功上传了文件...我不得不在代码中更改上传目录的路径,如下所示:
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
但是 uploads 目录必须手动创建,如果丢失则不会自动创建...我该如何解决这个问题?
你可以看看这个问题:
https://github.com/expressjs/multer/issues/287
它说你应该在 'destination' 中或作为先决条件创建一个目录。
我是一个 js 新手,我目前正在尝试使用 multer 上传一些文件。 这是我的代码:
let express = require('express');
let im = require('imagemagick');
let gm = require("gm").subClass({
imageMagick: true
});
let multer = require('multer');
let app = express();
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
var upload = multer({storage: storage}).single('avatar');
app.post('/', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
res.json({
success: false,
message: 'error during uploading'
});
} else if (err) {
res.json({
success: false,
message: 'error during uploading'
});
}
res.json({
success: true,
message: 'Image uploaded'
});
})
})
app.listen(3000);
当我发送带有文件(表单数据)的 post-req 时,我收到一条成功消息,但是 没有创建包含该文件的文件夹:
post request
编辑:
我成功上传了文件...我不得不在代码中更改上传目录的路径,如下所示:
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
但是 uploads 目录必须手动创建,如果丢失则不会自动创建...我该如何解决这个问题?
你可以看看这个问题: https://github.com/expressjs/multer/issues/287
它说你应该在 'destination' 中或作为先决条件创建一个目录。