世界上最伟大的投资就是投资自己的教育


id 832

ByeWord


6 minutes 59 seconds 学徒 中学生


  • Node.js + Express + MongoDB 基础篇视频教程 #6 上传文件
    let express = require('express');
    let bodyParser = require('body-parser')
    let fs = require('fs');
    
    let app = express();
    var multer = require('multer');
    
    // 创建目录的函数
    var createFolder = function (folder) {
        try {
            //判断目录是否存在,使用同步,异步不行
            //目录不存在会抛出异常
            fs.accessSync(folder);
        } catch (e) {
            // 抛出异常后创建目录,同步创建
            fs.mkdirSync(folder);
        }
    };
    // 文件目录的字符串(相对路径)
    var uploadFolder = './upload/';
    //调用目录创建函数 ==>目录创建完成
    createFolder(uploadFolder);
    
    // 创建一个storage对象
    //The disk storage engine gives you full control on storing files to disk.
    // 翻译的意思是:这个硬盘存储引擎可以让你完全掌控把文件存储到硬盘==>意思是:按照你想要的方式存储上传来的文件
    var storage = multer.diskStorage({
        // 设置存放位置
        destination: function (req, file, cb) {
            cb(null, uploadFolder);
        },
        // 设置文件名称
        filename: function (req, file, cb) {
            cb(null, file.originalname);
        }
    });
    // 使用storage
    var upload = multer({
        storage: storage
    });
    // parse application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({
        extended: false
    }))
    
    // parse application/json
    app.use(bodyParser.json())
    
    app.get('/form', (req, res) => {
        // 这里的话需要用同步读取文件,异步的话fileData将在响应前得不到内容
        let fileData = fs.readFileSync('./pages/form.html', {
            encoding: 'utf8'
        });
        res.send(fileData);
    })
    // app.post(path, callback [, callback ...])可以放多个回调函数,意思是你可以放一下中间件
    //upload.single('logo') ==>single代表单文件上传 和name属性保持一致 <input type="file" name="logo">
    //upload.single('avatar') // 单文件上传
    //upload.array('photos', 12) //文本上传
    //upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])//多文件上传
    app.post('/upload', upload.single('logo'), (req, res) => {
        console.dir(req.file);
        res.send({
            'ret_code': 0
        });
    })
    app.listen(3000, '127.0.0.1', () => {
        console.log("started");
    })
    
  • Node.js + Express + MongoDB 基础篇视频教程 #6 上传文件
    app.get('/form',(req,res)=>{
        // 这里的话需要用同步读取文件,异步的话fileData将在响应前得不到内容
       let fileData = fs.readFileSync('./pages/form.html',{encoding:'utf8'});
       res.send(file);
    })
    
  • 轻松学 Node.js - 基础篇免费视频教程 #6 读写文件(同步,异步)

    let fs = require('fs');

    //fs.readFile(path[, options], callback) 需要三个参数,这里的第二个参数代表可以省略
    // fs.readFile(path, options, callback) 这样使用这个 API 也是对的
    // fs.readFile(path, callback) 这样使用这个 API 也是对的

    // asynchronization 异步 ↓ path | | | 文件名或文件描述符。
    let dataOfReadMe = fs.readFile('readMe.txt',
    // ↓options |
    {
    encoding: 'utf8'
    },
    // ↓callback ==>参数 err ,data < string > | < Buffer >

    (err, data) => {
    fs.writeFile('writeMeAsyn.txt', data, (error) => {
    if (error) {
    throw error;
    }
    console.log('The file has been saved!');

    })
    

    })

  • 轻松学 Node.js - 基础篇免费视频教程 #5 事件

    let events = require('events');
    let utils = require('util');

    // let myEmitter = new events.EventEmitter();

    // myEmitter.on('connected',(message)=>{
    // console.log(message);
    // })
    //按监听器的注册顺序,同步地调用每个注册到名为 eventName 事件的监听器,并传入提供的参数。
    // myEmitter.emit('connected','你好世界')

    class Person extends events.EventEmitter {
    constructor(name){
    super();
    this.name = name;
    }
    }
    let lily = new Person('Lily');
    let lucy = new Person('Lucy');

    let peoples = [lily, lucy];
    peoples.forEach(people => {
    people.on('say',(message)=>{
    console.log(message,this);
    })
    });
    lily.emit('say','你好啊,世界');
    lucy.emit('say','欢迎,大千世界')

© 汕尾市求知科技有限公司 | Rails365 Gitlab | 知乎 | b 站 | csdn

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top