zoukankan      html  css  js  c++  java
  • 一个简单的blog系统(三) 增加文件上传功能

    1. 一个完整的博客怎么能缺少图片呢,目前上传文件的方法有三种:

      (1)使用Express自带的文件上传功能,不涉及数据库。

      (2)使用Formidable外部模块,不涉及数据库。

      (3)上传到MongoDB,涉及到数据库。

      可以看出,第一种方式最简单,Express通过bodyParser()解析请求体,因此我们可以使用bodyParser()来实现文件的上传功能。

    2.实现过程

      2.1 首先打开header.ejs,在<li><a href="/post" title='发表'>发表</a></li>,前面添加一行代码:

    <li><a href="/upload" title="上传">上传</a></li>

      2.2 然后,打开index.js,在app.get('/logout')函数后添加如下代码:

     1 //上传文件页路由
     2 router.get('/upload', checkLogin);    //限定只有登录的用户才能上传文件
     3 router.get('/upload', function(req, res) {
     4     res.render('upload', {
     5         title: '文件上传',
     6         user: req.session.user,
     7         success: req.flash('success').toString(),
     8         error: req.flash('error').toString()
     9     });
    10 });

      2.3 其次,我们在views文件夹下面新建upload.ejs,添加如下代码:

     1 <div class='container'>
     2     <h2>文件上传</h2>
     3     <hr/>
     4     <form enctype="multipart/form-data" method="post" action="/upload" class="form-horizontal">
     5         <div class="form-group">
     6           <label for="file1">文件输入</label>
     7           <input type="file" name="file1">
     8        </div>
     9        <div class="form-group">
    10           <label for="file1">文件输入</label>
    11           <input type="file" name="file1">
    12        </div>
    13        <div class="form-group">
    14           <label for="file1">文件输入</label>
    15           <input type="file" name="file1">
    16        </div>
    17        <button type="submit" class="btn btn-primary">上传</button>
    18    </form>
    19 </div>

      2.4 然后,修改app.js,添加如下代码:

     1 var multer  = require('multer');
     2 // 文件上传插件
     3 var storage = multer.diskStorage({
     4   destination: function (req, file, cb) {
     5     cb(null, './public/images/user')
     6   },
     7   filename: function (req, file, cb) {
     8     cb(null, file.fieldname + '-' + Date.now())
     9   }
    10 });
    11 app.use(multer({ storage: storage }).any());

      2.5 现在我们现在只是有了一个可以上传文件的表单而已,并不能上传文件,接下来我们添加对上传文件的支持。在 router.get('/upload') 后添加如下代码:

    router.post('/upload', checkLogin);
    router.post('/upload', function (req, res) {
      req.flash('success', '文件上传成功!');
      res.redirect('/upload');
    });

      至此,我们就给博客添加了文件上传功能。

  • 相关阅读:
    机器学习
    Python
    sublime的推荐插件
    C语言编程
    将生成logo图片导入到Altium Designer中
    基于MDK的stm32实践过程中,debug的总结
    LCD12864使用总结
    c语言使用技巧
    LCD12864显示中文乱码
    在Keil中做stm32的软件仿真,查看输出PWM波形时,在逻辑分析仪中规定IO口signal,出现"unknow signal"
  • 原文地址:https://www.cnblogs.com/yuity/p/5299112.html
Copyright © 2011-2022 走看看