day3.node(关于文件上传和mock模拟假数据)

2019-06-21  本文已影响0人  阿沙冲冲冲

文件上传

1.npm的包formidable

//引入相应的模块
var formidable = require('formidable'),
    http = require('http'),
    util = require('util');
 
http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    // form变量里存的就是前段发送过来的表单信息
    var form = new formidable.IncomingForm();
    //解析这个表单
    form.parse(req, function(err, fields, files) {
        //处理这个表单里面的字段和文字
      res.writeHead(200, {'content-type': 'text/plain'});
      res.write('received upload:\n\n');
      res.end(util.inspect({fields: fields, files: files}));
    });
 //fields:里面是一些字段
      //files:就是你所上传的图片信息,如路径,格式,时间等
    return;
  }
 
  // 显示文件上传表单
  res.writeHead(200, {'content-type': 'text/html'});
  res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+
    '<input type="text" name="title"><br>'+
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
}).listen(8080);

相关的API

form.keepExtensions = false;(保留上传文件后缀名把值设为true)

form.uploadDir="/"(设置文件放的目录)

mock.js (模拟假数据)

? $npm install mockjs // 安装mockjs

? 注:使用mockjs必须要解决跨域问题,可以使用cors插件允许所有源访问

// 使用 Mock
// 模拟来自list页面的get请求
var Mock = require('mockjs')
var router = require('express').Router()
router.get('/list',(req,resp)=>{
    var res_body = Mock.mock({
        // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
        'list|1-10': [{
            // 属性 id 是一个自增数,起始值为 1,每次增 1
            'id|+1': 1
        }]
    })
    // 输出结果
    resp.json({
        "res_code": 200,
        res_body
    })
})

// 模拟来自detail页面的post请求,比list会多一步接受list跳转过来的参数{id}
var Mock = require('mockjs')
var router = require('express').Router()
router.post('/detail',(req,resp)=>{
    // 接受list页面请求携带的id
    var {id} = res_body
    var res_body = Mock.mock({
        // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
        'detail|1-10': [{
            'id|+1': parseInt(Math.random()*10000),
            'title': '@ctitle(20,30)',
            'price': '@float(100,1000,2,2)',
            'img': '@image(300x100, @color,#fff,png,@word)'
        }]
    })
    // 输出结果
    resp.json({
        "res_code": 200,
        res_body
    })
})

module.exports = router

上一篇 下一篇

猜你喜欢

热点阅读