当前位置: 首页 > article >正文

Node.js——文件上传

文件上传

插件:formidable,地址:https://www.npmjs.com/package/formidable,参考里面with Express.js部分。

html部分截图参考:
在这里插入图片描述

express-generator生成的示例代码:

const formidable = require('formidable');
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res, next) {
  res.render('index', { title: 'Express' });
});

router.get('/portrait', (req, res, next) => {
  res.render('portrait');
});

router.post('/portrait', (req, res) => {
  // 文件上传请求的路由规则中
  const form = new formidable.IncomingForm();
  console.log('form=====', form);
  // form 创建表单对象
  form.parse(req, (err, fields, files) => {
    if (err) {
      next(err);
      return;
    }
    console.log('fields',fields);
    console.log('files',files);
    // res.json({ fields, files });
    res.send('ok');
  });
})

module.exports = router;

在文件上传中,可以打印fieldsfiles

fields 
{ username: [ '111' ] }
files
{
  "files": {
    "portrait": [
      {
        "_events": {},
        "_eventsCount": 1,
        "_maxListeners": undefined,
        "lastModifiedDate": "2024-11-01T08:29:29.712Z",
        "filepath": "C:\\Users\\xxxxx\\AppData\\Local\\Temp\\c1748ae363aa99bed12cb3700",
        "newFilename": "c1748ae363aa99bed12cb3700",
        "originalFilename": "微信图片_20220908091829.png",
        "mimetype": "image/png",
        "hashAlgorithm": false,
        "size": 453353,
        "_writeStream": "[WriteStream]",
        "hash": null,
        "[Symbol(kCapture)]": false
      }
    ]
  }
}

保存到网站根目录,一般都是public目录下:

router.post('/portrait', (req, res) => {
  // 文件上传请求的路由规则中
  const form = new formidable.IncomingForm({
    multiples: true,
    // 设置文件上传目录
    uploadDir: __dirname + '/../public/images',
    // 保持文件后缀
    keepExtensions: true
  });
  console.log('form=====', form);
  // form 创建表单对象
  form.parse(req, (err, fields, files) => {
    if (err) {
      next(err);
      return;
    }
    console.log('fields', fields);
    console.log('files', files);
    // res.json({ fields, files });
    res.send('ok');
  });
})

服务端存储图片

  form.parse(req, (err, fields, files) => {
    if (err) {
      next(err);
      return;
    }
    // 服务器保存该图片的访问url
    let url = '/images/' + files.portrait[0].newFilename; // 后续将保存到数据库中
      res.send(url);
  });

http://www.kler.cn/a/384342.html

相关文章:

  • C语言复习第7章 自定义类型(结构体+位段+枚举+联合体)
  • gov企业征信系统瑞数6vmp算法还原
  • 内部知识库:优化企业培训流程的关键驱动力
  • Java | Leetcode Java题解之第546题移除盒子
  • Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
  • Pandas 数据分析工具详细教程
  • Sophos | 网络安全
  • Cesium使用flyToBoundingSphere实现倾斜相机视角观察物体
  • VScode建立Java项目
  • Oracle 11g安装教程
  • OceanBase 安装使用详细说明
  • C++ 线程初始化编译报错
  • docker镜像仓库常用命令
  • ios打包私钥证书和profile文件最正式最常用的生成流程
  • linux系统中涉及到用户管理的命令知识
  • AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO
  • 代码随想录算法训练营第三十九天|Day39 动态规划
  • 汽车广告常见特效处理有哪些?
  • 备战软考Day05-数据库系统基础知识
  • centos查看硬盘资源使用情况命令大全
  • 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现
  • 宏集Cogent DataHub: 高效实现风电场数据集中管理与自动化
  • 股指期货交易中,如何应对震荡行情?
  • mmpose框架进行人体姿态识别模型HRNet训练
  • AJAX 全面教程:从基础到高级
  • [react]10、react性能优化