有没有在FileSystem中通过NodeJs上传图片并将路径保存在MongoDB中的简单例子?
Any simple example of uploading image by NodeJs in FileSystem and saving the path in MongoDB?
我在网上搜索了一段时间,但我找不到任何使用 NodeJs+(可能是 Multer)在文件系统中上传多张图片并将它们的路径保存在 MongoDB 中的简单示例。
我发现这个问题相同,但答案似乎不适合我。
how to upload the image to folder using nodejs and save the path into mongodb?
到目前为止,我已经能够将图像保存在文件系统中。
这是我到目前为止所做的。
package.json:
{
"name": "file_upload",
"version": "0.0.1",
"dependencies": {
"body-parser": "^1.14.2",
"express": "4.13.3",
"multer": "1.1.0"
},
"devDependencies": {
"should": "~7.1.0",
"mocha": "~2.3.3",
"supertest": "~1.1.0"
}
}
Server.js:
var express = require("express");
var bodyParser = require("body-parser");
var multer = require('multer');
var app = express();
app.use(bodyParser.json());
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage }).array('userPhoto',2);
app.get('/',function(req,res){
res.sendFile(__dirname + "/index.html");
});
app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
//console.log(req.body);
//console.log(req.files);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
app.listen(3000,function(){
console.log("Working on port 3000");
});
Index.html:
<html>
<head>
<title>File upload Node.</title>
</head>
<body>
<form id="uploadForm"
enctype="multipart/form-data"
action="/api/photo"
method="post">
<input type="file" name="userPhoto" multiple />
<input type="submit" value="Upload Image" name="submit">
<input type='text' id='random' name='random'><br>
<span id = "status"></span>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.51/jquery.form.min.js"></script>
<script>
$(document).ready(function() {
$('#uploadForm').submit(function() {
$("#status").empty().text("File is uploading...");
$(this).ajaxSubmit({
error: function(xhr) {
status('Error: ' + xhr.status);
},
success: function(response) {
console.log(response)
$("#status").empty().text(response);
}
});
return false;
});
});
</script>
</body>
</html>
如果你能给我一些提示,我将非常感激我如何在此处添加 mongoDB 以在 mongoDB 中相应地保存路径,以及如何在这种情况下检索图像。
更新答案:感谢@flott
server.js
var express = require("express");
var bodyParser = require("body-parser");
var multer = require('multer');
var multerdragdrop = require('multer');
var app = express();
var http=require("http").Server(app);
var socket=require("socket.io")(http);
app.use(bodyParser.json());
//Path for loading static files
app.use("/FrontEnd/css",express.static(__dirname+'/public/FrontEnd/css'));
app.use("/FrontEnd/js",express.static(__dirname+'/public/FrontEnd/js')); app.use("/FrontEnd/partials",express.static(__dirname+'/public/FrontEnd/partials '));
app.use("/uploads",express.static(__dirname+'/uploads'));
app.use("/FrontEnd/Pictures",express.static(__dirname+'/public/FrontEnd/Pictures'));
var connect=require('./AdditionServerSide/MongoDbLib');
//Multer Storeage
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, __dirname+'/uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage }).array('userPhoto',8);
var uploaddragdrop=multerdragdrop({ storage : storage }).array('file',8);
app.get('/',function(req,res){
res.sendFile(__dirname + "/public/index.html");
});
//Image Upload form
app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
//console.log(req.body);
console.log( req.files[0].destination);
//console.log( req.files[0].filename);
//console.log( req.files[0].path);
connect.addvalues('mongodb://localhost:27017/testimages','storedimages',req.file s[0].filename,req.files[0].destination);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
//Drag and Drop Form Control
app.post('/photos',function(req,res){
uploaddragdrop(req,res,function(err){
if(err){
return res.end("Error Uploading file");
}else {
//console.log(req.files[0].originalname);
//connect.addvalues('mongodb://localhost:27017/testimages','storedimages',req.files[0].originalname,req.files[0].path);
return res.end("Success");
}
});
});
//******** Socket Function to receive data *********
socket.on('connection',function(socket){
socket.on('disconnect', function(){
// console.log("A user has disconnected");
});
socket.on('Latitude', function(msg){
// console.log("Latitude"+ msg);
});
socket.on('Longitude', function(msg){
// console.log("Longittude"+msg);
});
//Request from page to load images
socket.on("LoadImage",function(msg){
//Connect to data base and extract images
connect.establishConnection("mongodb://localhost:27017/testimages","storedimages ",null,null,function(results){
if(results!=undefined) {
if(msg.toUpperCase()=="YES"){
socket.emit("ImageUploads", results+','+__dirname);
}
}
})
});
});`
MongoDBLib.js
var mongodb = require('mongodb').MongoClient;
module.exports= {
establishConnection: function (connectionstring, databasename, queryby, queryval, callback) {
var filenames=[];
var filepaths=[];
var results;
mongodb.connect(connectionstring, function (err, db) {
if (callback) {
callback();
}
if (!err) {
var cursor=db.collection(databasename).find();
cursor.each(function(err,doc){
if(doc!=null) {
callback(doc.filename+","+doc.filepath);
}
})
}
else
console.log("Error happened");
});
},
addvalues: function (connectionstring, databasename, filename, filepath, callback) {
if (callback) {
callback();
}
mongodb.connect(connectionstring, function (err, db) {
var collec = db.collection(databasename);
if (collec != null) {
db.collection('storedimages').insert({
"filename": filename,
"filepath": filepath
}, {w: 1}, function (err, records) {
if (records != null) {
console.log("Record added");
db.close();
}
else
console.log("Cannot add");
});
}
else {
console.log("Database not found! error");
}
});
},
retrievevalues: function ( connectionstring, databasename, filename, filepath, callback) {
if (callback) {
callback();
}
mongodb.connect(connectionstring, function (err, db) {
var collec = db.collection(databasename);
if (collec != null) {
db.collection('storedimages').find({"filename":filename,"filepath":filepath},{w:1},function(err,records){
if(records!=null) {
console.log("Record retrieved");
db.close();
}
else
console.log("Cannot retrieve");
});
}
else {
console.log("Database not found! error");
}
});
}
}`
首先,安装 mongoDB(如果您还没有)并确保它是 运行。然后您可以通过以下方式连接到 mongoDB 服务器:
var mongo = require('mongodb');
var MongoClient = require('mongodb').MongoClient
var db;
MongoClient.connect('mongodb://localhost:27017/test', function(err, Db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
console.log('CONNECTED TO MONGODB');
db = Db;
}
});
然后您可以通过以下方式将内容插入集合 'yourCollection' 中的数据库:
var collection = db.collection('yourCollection');
collection.insertOne(data, (err, r) => {
if (err) {
console.log('Error:', err);
} else {
console.log('OK');
}
});
我在网上搜索了一段时间,但我找不到任何使用 NodeJs+(可能是 Multer)在文件系统中上传多张图片并将它们的路径保存在 MongoDB 中的简单示例。
我发现这个问题相同,但答案似乎不适合我。 how to upload the image to folder using nodejs and save the path into mongodb?
到目前为止,我已经能够将图像保存在文件系统中。 这是我到目前为止所做的。
package.json:
{
"name": "file_upload",
"version": "0.0.1",
"dependencies": {
"body-parser": "^1.14.2",
"express": "4.13.3",
"multer": "1.1.0"
},
"devDependencies": {
"should": "~7.1.0",
"mocha": "~2.3.3",
"supertest": "~1.1.0"
}
}
Server.js:
var express = require("express");
var bodyParser = require("body-parser");
var multer = require('multer');
var app = express();
app.use(bodyParser.json());
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage }).array('userPhoto',2);
app.get('/',function(req,res){
res.sendFile(__dirname + "/index.html");
});
app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
//console.log(req.body);
//console.log(req.files);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
app.listen(3000,function(){
console.log("Working on port 3000");
});
Index.html:
<html>
<head>
<title>File upload Node.</title>
</head>
<body>
<form id="uploadForm"
enctype="multipart/form-data"
action="/api/photo"
method="post">
<input type="file" name="userPhoto" multiple />
<input type="submit" value="Upload Image" name="submit">
<input type='text' id='random' name='random'><br>
<span id = "status"></span>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.51/jquery.form.min.js"></script>
<script>
$(document).ready(function() {
$('#uploadForm').submit(function() {
$("#status").empty().text("File is uploading...");
$(this).ajaxSubmit({
error: function(xhr) {
status('Error: ' + xhr.status);
},
success: function(response) {
console.log(response)
$("#status").empty().text(response);
}
});
return false;
});
});
</script>
</body>
</html>
如果你能给我一些提示,我将非常感激我如何在此处添加 mongoDB 以在 mongoDB 中相应地保存路径,以及如何在这种情况下检索图像。
更新答案:感谢@flott
server.js
var express = require("express");
var bodyParser = require("body-parser");
var multer = require('multer');
var multerdragdrop = require('multer');
var app = express();
var http=require("http").Server(app);
var socket=require("socket.io")(http);
app.use(bodyParser.json());
//Path for loading static files
app.use("/FrontEnd/css",express.static(__dirname+'/public/FrontEnd/css'));
app.use("/FrontEnd/js",express.static(__dirname+'/public/FrontEnd/js')); app.use("/FrontEnd/partials",express.static(__dirname+'/public/FrontEnd/partials '));
app.use("/uploads",express.static(__dirname+'/uploads'));
app.use("/FrontEnd/Pictures",express.static(__dirname+'/public/FrontEnd/Pictures'));
var connect=require('./AdditionServerSide/MongoDbLib');
//Multer Storeage
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, __dirname+'/uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage }).array('userPhoto',8);
var uploaddragdrop=multerdragdrop({ storage : storage }).array('file',8);
app.get('/',function(req,res){
res.sendFile(__dirname + "/public/index.html");
});
//Image Upload form
app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
//console.log(req.body);
console.log( req.files[0].destination);
//console.log( req.files[0].filename);
//console.log( req.files[0].path);
connect.addvalues('mongodb://localhost:27017/testimages','storedimages',req.file s[0].filename,req.files[0].destination);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
//Drag and Drop Form Control
app.post('/photos',function(req,res){
uploaddragdrop(req,res,function(err){
if(err){
return res.end("Error Uploading file");
}else {
//console.log(req.files[0].originalname);
//connect.addvalues('mongodb://localhost:27017/testimages','storedimages',req.files[0].originalname,req.files[0].path);
return res.end("Success");
}
});
});
//******** Socket Function to receive data *********
socket.on('connection',function(socket){
socket.on('disconnect', function(){
// console.log("A user has disconnected");
});
socket.on('Latitude', function(msg){
// console.log("Latitude"+ msg);
});
socket.on('Longitude', function(msg){
// console.log("Longittude"+msg);
});
//Request from page to load images
socket.on("LoadImage",function(msg){
//Connect to data base and extract images
connect.establishConnection("mongodb://localhost:27017/testimages","storedimages ",null,null,function(results){
if(results!=undefined) {
if(msg.toUpperCase()=="YES"){
socket.emit("ImageUploads", results+','+__dirname);
}
}
})
});
});`
MongoDBLib.js
var mongodb = require('mongodb').MongoClient;
module.exports= {
establishConnection: function (connectionstring, databasename, queryby, queryval, callback) {
var filenames=[];
var filepaths=[];
var results;
mongodb.connect(connectionstring, function (err, db) {
if (callback) {
callback();
}
if (!err) {
var cursor=db.collection(databasename).find();
cursor.each(function(err,doc){
if(doc!=null) {
callback(doc.filename+","+doc.filepath);
}
})
}
else
console.log("Error happened");
});
},
addvalues: function (connectionstring, databasename, filename, filepath, callback) {
if (callback) {
callback();
}
mongodb.connect(connectionstring, function (err, db) {
var collec = db.collection(databasename);
if (collec != null) {
db.collection('storedimages').insert({
"filename": filename,
"filepath": filepath
}, {w: 1}, function (err, records) {
if (records != null) {
console.log("Record added");
db.close();
}
else
console.log("Cannot add");
});
}
else {
console.log("Database not found! error");
}
});
},
retrievevalues: function ( connectionstring, databasename, filename, filepath, callback) {
if (callback) {
callback();
}
mongodb.connect(connectionstring, function (err, db) {
var collec = db.collection(databasename);
if (collec != null) {
db.collection('storedimages').find({"filename":filename,"filepath":filepath},{w:1},function(err,records){
if(records!=null) {
console.log("Record retrieved");
db.close();
}
else
console.log("Cannot retrieve");
});
}
else {
console.log("Database not found! error");
}
});
}
}`
首先,安装 mongoDB(如果您还没有)并确保它是 运行。然后您可以通过以下方式连接到 mongoDB 服务器:
var mongo = require('mongodb');
var MongoClient = require('mongodb').MongoClient
var db;
MongoClient.connect('mongodb://localhost:27017/test', function(err, Db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
console.log('CONNECTED TO MONGODB');
db = Db;
}
});
然后您可以通过以下方式将内容插入集合 'yourCollection' 中的数据库:
var collection = db.collection('yourCollection');
collection.insertOne(data, (err, r) => {
if (err) {
console.log('Error:', err);
} else {
console.log('OK');
}
});