javascript - 在 Nodejs/Express 中上传图片最简单的方法是什么

标签 javascript node.js mongodb express

我有一个表单,用户可以通过该表单上传图像。我想通过nodejs上传它,保存在DB(mongodb)中并显示回模板(EJS)。

我读到了有关 gridFS 的内容,但我正在寻找上传图像的最简单方法。

EJS:

<h2>Enter your Data</h2>
<form action="/test" method="POST">
<input type="username" placeholder="username" name="Username" /> <br />
<input type="text" placeholder="title" name="Name" /><br />
<textarea name="Description" ></textarea><br />
<input type="link" name="Clink"/><br />
<input type="file" name="imgUpload"/><br />
<input type="submit" value="Submit" id="btn"/>
</form>



var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var fs = require('fs');

var routes = require('./routes/index');
var users = require('./routes/users');
var about = require('./routes/about');
//var contact = require('./routes/contact');
//var blogData = require('./routes/blogData');

var app = express();


//Connect DB
mongoose.connect('mongodb://localhost:27017/dataTest');

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);
app.use('/about', about);
//app.use('/contact', contact);
//app.use('/blogData', blogData);

//Scheme
var Schema = new mongoose.Schema({
    _id : String,
    Name   : String,
    Description    : String,
    Clink : String
});

//Model
var BlogPost = mongoose.model('Blog', Schema);

app.post('/test',function(req,res){
  new BlogPost({
      _id : req.body.Username,
      Name : req.body.Name,
      Description : req.body.Description,
      Clink : req.body.Clink
  }).save(function(err, doc){
    if(err){
      console.log('boo');
    }
    else{
      console.log('inner');
      res.redirect('contact');
      res.end();
      }
  })
});

最佳答案

要在node.js中上传图像,您只需使用base64编码,然后插入MongoDb即可。

在检索时,您可以获取 base64 编码的图像并将其转换为图像格式。

<input type="file" id="fileinput" name ="image" multiple="multiple" accept="image/*" />

首先将图像转换为 Base64 并保存到数据库中:

router.post('/upload',function(req,res){
var base64ToBuffer = new Buffer(req.image, 'base64');//Convert to base64

//Write your insertcode of MongoDb

res.end("Image uploaded Successfully"); 
});

之后要显示图像,您可以编写另一个路由器:

router.get('/showImage', function(req, res) {
    // Write code to retrieve image base64 code
    var imageBase64;
    render image to jade template
})

关于javascript - 在 Nodejs/Express 中上传图片最简单的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289342/

相关文章:

javascript - 如何将大型 jQuery 对象数组合并为一个?

javascript - 鼠标输入无法正常工作

node.js - 今天 Node.js 连接中的 mongodb

node.js - 这个 npm 开关如何修复 Windows 路径长度问题

javascript - @override 一个方法,Google Closure Compiler

javascript - Firestore 执行 get 命令 super 慢

javascript - 在 Sequelize 中不小心吞下了非空约束(可能是 bluebird 中的错误处理 promise 搞砸了)

mongodb - 在 MongoDB 中插入时如何检查引用?

android - 如何将我的 Android 应用程序与 mongodb.atlas 连接?

mongodb - mgo time.Time 或 bool 检查