欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nodejs学习笔记(5+)文件上传基础 demo (不包括数据库操作)

程序员文章站 2022-03-04 20:43:16
...

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>文件</title>
</head>
<body>
  <form action="/journal/receive_file" method="POST" enctype="multipart/form-data">
    <input type="file" name="files" value="选择文件"><br>
    <input type="submit" value="提交">
  </form>
</body>
</html>

server.js

const express = require('express');
const fs = require('fs');
const app = express();

// 文件缓存目录
const multer = require('multer');
const upload = multer({
  dest: 'D:/rswork/upload/tmp/'
});

// 连接池集群,管理多个连接
const poolCluster = mysql.createPoolCluster();
poolCluster.add('rsjournal', models.mysql_rsjournal); // 连接数据库,此处不完整

// 接收文件
app.post('/receive_file',upload.array('files'), (req, res) => {
  if (!req.files[0]) {
    res.send('文件传输错误')
  }
  var des_file = "D:/rswork/upload/" + req.files[0].fieldname + "/" + req.files[0].originalname

  fs.readFile(req.files[0].path, function (error, data) {
    if (error) {
      return console.error(error)
    }
    // console.log('writeFile前面');
    fs.writeFile(des_file, data, function (err) {
      if (err) {
        // 接收失败
        res.send('文件传输错误')
        return console.error(err)
      } else {
        // 接收成功
        res.send('成功!')
        // 删除缓存文件
        fs.unlink(req.files[0].path, function (err) {
          if (err) {
            return console.error(err)
          }
        })
      }
    })
  })  
})

const server = app.listen(3333, '0.0.0.0', () => {
  console.log('实例访问地址: %s:%d',
    server.address().address,
    server.address().port);
});
相关标签: Nodejs