我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

      • nodejs有哪些全局对象,怎么用
      • 如何在nodejs中实现分页机制功能
      • 如何在nodejs实现文件上传功能
        • 是什么
          • 特性
        • 怎么用
        • 原理
        • FAQ
      • 如何实现nodejs鉴权机制,说一下思路
      • 说说nodejs中require的原理
      • 说说nodejs中的EventEmit是如何实现的
      • 说说nodejs中的事件循环机制理解
      • 说说nodejs中进程通信有哪些方式
      • 说说nodejs中间件是什么,如何封装一个中间件
      • 说说对buffer的理解及应用场景
      • 说说对fs模块的理解及常用方法
      • 说说对nodejs的理解及应用场景
      • 说说对process的理解及常用方法
      • 说说对stream的理解及应用场景
      • nodejs如何进行性能监控及优化
      • nodejs批量改文件名
    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • nodejs
fangdown
2021-08-17
目录

如何在nodejs实现文件上传功能

# 是什么

文件上传: 浏览器不能直接操作文件,经过下列流程完成上传

  • 需经过用户交互
  • 然后通过浏览器暴露的统一接口访问文件
  • 读取文件到指定内存中
  • 将内存中的数据提交到服务器
  • 服务器解析数据并保存

# 特性

  • content-type: mutipart/form-data(混合资源)
  • boundary 标识分隔符,— — —XXX开始,以— — —XXX结尾
  • content-disposition,包含type,name,filename: type:form-data; name="user"; filename="test.png"

# 怎么用

<!-- 前端表单 -->
<form action="http://localhost:8080/api/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file" value="" multiple="multiple" />
    <input type="submit" value="提交"/>
</form>
// 写入
router.post('/uploadfile', async (ctx, next) => {
  // 上传单个文件
  const file = ctx.request.files.file; // 获取上传文件
  // 创建可读流
  const reader = fs.createReadStream(file.path);
  let filePath = path.join(__dirname, 'public/upload/') + `/${file.name}`;
  // 创建可写流
  const upStream = fs.createWriteStream(filePath);
  // 可读流通过管道写入可写流
  reader.pipe(upStream);
  return ctx.body = "上传成功!";
});

# 原理

# FAQ

#文件上传
上次更新: 2021/12/19, 18:05:42
如何在nodejs中实现分页机制功能
如何实现nodejs鉴权机制,说一下思路

← 如何在nodejs中实现分页机制功能 如何实现nodejs鉴权机制,说一下思路→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式