nodejs获取formdata上传的文件及解析excel问题

一、获取formdata上传的文件

  问题:使用 koa-bodyparser 可以解析post提交的问题,但是发现获取不到formdata上传的文件。

  后经查资料,改用 koa-body 解决:

复制代码
const koaBody = require('koa-body');

app.use(koaBody({
  multipart: true,
  formidable: {
    maxFileSize: 200 * 1024 * 1024 // 设置上传文件大小最大限制,默认2M
  }
}))
复制代码

  然后就可以在 ctx.request.files 里面获取到上传的 文件信息了。ctx.request.files 为一个对象,里面包含一个 file 字段(为你前端上传定义的值),值为文件信息,主要是文件name和path,path为临时存储路径。

二、解析xlsx文件信息

  主要使用模块 node-xlsx :npm i xlsx --save

1、加载模块

  使用模块:fs--主要用于写入文件;node-xlsx主要用于转换xlsx数据和读取xlsx的文件数据;

const fs = require('fs')
const xlsx = require('node-xlsx');      // 读写xlsx的插件

2、读取功能

  读取功能相对简单,直接使用模块的 prase(路径) 方法就能读取

let list = xlsx.parse("./doc/hello.xlsx");

  返回结果,name:表名,data:二维数组。(由于Excel以表格的形式表示,因此表格的数据都是通过二维数组进行接收。)

  需要注意的是:data里的第一行数组为表头的信息

[
  { name: 'firstSheet', data: [ [Array], [Array] ] },
  { name: 'secondSheet', data: [ [Array], [Array] ] }
]

3、写入功能

  写入功能,对应的写入数据与上面读取功能的返回格式需要一致,以数组的形式,name:表名,data:二维数组(Excel每行每列的数据)

  如下面代码,生成一个Excel文件,分别两张表,表名分别是firstSheet,secondSheet

复制代码
let xlsxObj = [
    {
        name: 'firstSheet',
        data: [
            [1, 2, 3],
            [4, 5, 6]
        ],
    },
    {
        name: 'secondSheet',
        data: [
            [7, 8, 9],
            [10, 1, 12]
        ],
    }
]
复制代码

  生成Excel文件:

  fs.writeFileSync(路径,Buffer数据)

  xlsx.build(xlsxObj) 会将数组转换为Buffer数据

  执行下面代码就会生成对应的Excel文件

fs.writeFileSync('./doc/hello.xlsx', xlsx.build(xlsxObj), "binary");

  具体用法可查看文档

posted @   古兰精  阅读(2988)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示