多上传到 mongodb gfs
multi upload to mongodb gfs
app.post("/", upload.single("avatar"), function(req, res, next){
var writestream = gfs.createWriteStream({
filename: req.file.filename
});
fs.createReadStream("./uploads/kkm/" + req.file.filename)
.on("end", function() {
fs.unlink("./uploads/kkm/"+ req.file.filename, function(err) {
res.send("success")
})
})
.pipe(writestream);
});
我想上传 2 张图片到 mongodb,我可以为一张图片创建写入和读取流,但对两个文件失去了主意。
我可以用管道输送一张图片,但不能输送两张图片。当我尝试数组方法时,它回复
"TypeError: Cannot read property 'filename' of undefined" ERROR.
我的目标是用一种方法或其他方法同时将两个文件上传到 mongodb。我怎样才能做到这一点?
GridFS 方法每次调用插入一个文件,但您可以轻松实现。您需要在 Node.JS 应用程序中使用循环并将文件一个一个地发送到 GridFS。
如果你使用 multer,你可以这样做
const storage = multer.diskStorage({
destination: (req, file, callback) => {
callback(null, './.temp/uploads');
},
filename: (req, file, callback) => {
callback(null, file.fieldname + '-' + Date.now());
}
});
const multerOptions = {
storage: storage
};
const upload = multer(multerOptions).array('files[]');
module.exports = (req, res, next) => {
upload(req, res, (err) => {
for (let i in req.files) {
const file = req.files[i];
// here you can call GridFS method and upload the file
}
});
});
app.post('/upload', function(request, response) {
upload(request, response, function(err) {
var files = new Array (req.file.filename,req.file.namedName)
for(var i = 0 ; i < files.length; i++)
{
// here you can call GridFS method
}
});
- 感谢@Ariel Henryson 的帮助。
- 我按照我的方式循环并且有效。
- 我多次尝试你的方法。
- 我不知道如何使用 module.exports = (req, res, next) => {
它回复的方法不能 post 错误,它也显示语法错误。
- 你在哪里使用app.post方法。
- 如果你不介意,请你写完整的代码,没关系
如果没有。
app.post("/", upload.single("avatar"), function(req, res, next){
var writestream = gfs.createWriteStream({
filename: req.file.filename
});
fs.createReadStream("./uploads/kkm/" + req.file.filename)
.on("end", function() {
fs.unlink("./uploads/kkm/"+ req.file.filename, function(err) {
res.send("success")
})
})
.pipe(writestream);
});
我想上传 2 张图片到 mongodb,我可以为一张图片创建写入和读取流,但对两个文件失去了主意。
我可以用管道输送一张图片,但不能输送两张图片。当我尝试数组方法时,它回复
"TypeError: Cannot read property 'filename' of undefined" ERROR.
我的目标是用一种方法或其他方法同时将两个文件上传到 mongodb。我怎样才能做到这一点?
GridFS 方法每次调用插入一个文件,但您可以轻松实现。您需要在 Node.JS 应用程序中使用循环并将文件一个一个地发送到 GridFS。
如果你使用 multer,你可以这样做
const storage = multer.diskStorage({
destination: (req, file, callback) => {
callback(null, './.temp/uploads');
},
filename: (req, file, callback) => {
callback(null, file.fieldname + '-' + Date.now());
}
});
const multerOptions = {
storage: storage
};
const upload = multer(multerOptions).array('files[]');
module.exports = (req, res, next) => {
upload(req, res, (err) => {
for (let i in req.files) {
const file = req.files[i];
// here you can call GridFS method and upload the file
}
});
});
app.post('/upload', function(request, response) {
upload(request, response, function(err) {
var files = new Array (req.file.filename,req.file.namedName)
for(var i = 0 ; i < files.length; i++)
{
// here you can call GridFS method
}
});
- 感谢@Ariel Henryson 的帮助。
- 我按照我的方式循环并且有效。
- 我多次尝试你的方法。
- 我不知道如何使用 module.exports = (req, res, next) => { 它回复的方法不能 post 错误,它也显示语法错误。
- 你在哪里使用app.post方法。
- 如果你不介意,请你写完整的代码,没关系 如果没有。