我是傲夫靠斯,欢迎关注我的公众号【前端工程师的自我修养】,每天更新。

今天我们来搞一个Node.js Express的上传文件功能,我使用了busboy这个库。

Busboy是一个基于事件的文件流解析器,不仅限于Express框架使用,其他的任何文件流都能使用。它不存储文件,而是直接将文件写入到你提供的写入流。

使用Busboy可以让我们的上传更加简单,接下来我们一步步搞起来。

Node.js express 上传文件/图片步骤

1.创建express应用项目

2.安装express、busboy依赖

3.写一个上传文件表单

4.创建文件接收处理服务

5.启动服务

6.测试服务是否正常工作

1.创建Express应用

执行下面命令来创建项目文件夹,初始化Node.js项目

mkdir express-upload-file
cd express-upload-file
npm init -y

2.安装Express、Busboy依赖

在命令行执行下面命令安装expressbusboy依赖

npm install express
npm install busboy

3.创建上传文件表单

创建一个带有上传文件的input和一个submit按钮

// 用于上传文件表单
app.get('/', (req, res) => {res.send(`<!DOCTYPE html><html><body><form action="upload" method="post" enctype="multipart/form-data"><h1>选择上传的文件</h1>  <input type="file" name="file"><input type="submit" value="上传"></form></body></html>`)
})

确保form具有enctype="multipart/form-data"属性,并且为post请求,否则表单不能上传文件。很多刚刚接触前端的初学者很容易遇到这种坑。

4.创建server.js文件,处理接收文件

创建server.js文件,创建uploads文件夹用于存储上传的文件,引入express、busboy依赖,处理文件接收

const express = require('express')
const Busboy = require('busboy')
const path = require('path')
const fs = require('fs')var app = express();// 用于上传文件表单
app.get('/', (req, res) => {res.send(`<!DOCTYPE html><html><body><form action="upload" method="post" enctype="multipart/form-data"><h1>选择上传的文件</h1>  <input type="file" name="file"><input type="submit" value="上传"></form></body></html>`)
})// 处理上传文件服务
app.post('/upload', (req, res) => {const busboy = new Busboy({ headers: req.headers });busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {const saveTo = path.join(__dirname, 'uploads', filename);file.pipe(fs.createWriteStream(saveTo));});busboy.on('finish', function () {res.send("文件上传成功");});return req.pipe(busboy);
});app.listen(3000, function () {console.log('服务启动成功:http://localhost:3000');
});

5.启动服务

修改package.json文件,增加start命令

{"name": "express-upload-file","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "node server"},"keywords": [],"author": "","license": "ISC","dependencies": {"busboy": "^0.3.1","express": "^4.17.1"}
}

运行下面命令,启动文件上传服务

npm start
# 服务启动成功:http://localhost:3000

6.测试上传文件

通过浏览器进行测试

通过Postman测试

可以看到无论通过哪种方式进行上传都会存储到uploads文件夹下。

到这我们的功能就算完成了。欢迎有什么问题留言私信。

源码:https://github.com/cmdfas/express-upload-file

更多干货内容,欢迎关注我的公众号【前端工程师的自我修养】,每天更新。

使用Node.js express 开发上传文件/图片api接口相关推荐

  1. node.js实现formdata上传文件

    node.js实现formdata上传文件 1.关于formdata XMLHttpRequest Level 2 添加了一个新的接口--FormData.利用 FormData 对象,我们可以通过 ...

  2. node.js使用multiparty上传文件

    multiparty使用:multiparty文档 https://www.npmjs.com/package/multiparty 下面介绍一下利用formData向后台提交图片的过程:写在前面的话 ...

  3. 微信小程序-云开发上传文件、图片

    文章目录 一.前言 二.功能简介 1.选择微信聊天记录中的文件 2.选择本地相册/拍照图片 3.上传功能 三.实现代码 1.选择聊天文件函数(js) 2.选择相册函数(js) 3.上传文件函数(js) ...

  4. 七牛云 vue 图片上传简单解说,js 上传文件图片

    七牛云 vue 图片上传简单解说,js 上传文件图片 一.七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范. 七牛云有免费的使用额 ...

  5. 公众号后台开发上传文件功能

    微信公众号开发中, 上传文件是一个常用功能, 包括图片上传,视频,文件,附件,语音都要使用到这个. 今天的课程中, 介绍一个上传文件的类, 可以设置保存文件路径, 设置上传文件的类型- 公众号后台开发 ...

  6. JAVA上传文件图片到服务器保存

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存! 首先是页面 html的   我这是提交一个文件和类型 <div style="border: 1px solid ...

  7. java上传文件图片到服务器保存,Java上传文件图片到服务器的方法

    这里我记录一个比较简单方便操作的java上传文件图片到服务器并且保存,具体内容如下 首先是页面html的   我这是提交一个文件和类型 我是添加一张临时图片得到微信的media_id保存数据库! en ...

  8. html5封装图片,简单封装前端上传文件/图片

    前言 最近项目会一直用到各种类型的上传文件的功能, 所以就基于elment-ui简单的做了一个封装, 比较好用 正文 引入 import TestUpload from '../components/ ...

  9. tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied

    tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...

最新文章

  1. Qt Installer Framework实战
  2. linux怎么运行exam,《 rh124-exam》linux练习
  3. python 解析xml
  4. 详解虚函数的实现过程之初探虚表(1)
  5. 【AS3代码】添加/删除XML子元素及属性
  6. centos有趣软件包_这5个软件包使学习R变得有趣
  7. python面试题总结(5)--数据类型(字典)
  8. js添加关闭功能_微信小程序开发之添加夜间模式功能
  9. vuecli3修改项目启动端口
  10. 如何设计出高端大气、有黑科技感的可视化大屏?
  11. 3.MongoDB uri中包含特殊字符与读策略配置
  12. java项目开发团队协作重要性_Java 项目开发团队有必要统一 IDE 吗?
  13. html5 微信 飞机 源码,[HTML5]微信飞机大战
  14. ora 01033 解决
  15. 内存卡格式化的原因有哪些 内存卡格式化怎么恢复
  16. primordials is not defined错误,正确的解决方案 亲测 完美 好用
  17. app版本更新提醒方案
  18. 『幽默』网络经典语录1600条~~(可累死我了)
  19. 自定义控件其实很简单5/12
  20. android 重复解绑服务,Android培训实战教程之多次解绑抛出异常原因

热门文章

  1. java 详细教程AXIS调用webservice(直接上代码)
  2. 长沙博物馆 乐在其中,思在其中
  3. 计算机之间的通信原理
  4. 谈小米内忧外患的困境
  5. 设计模式——七大原则
  6. 安装NTFS For Mac时显示文件已损坏怎么办
  7. 【自然语言处理】词袋模型在文本分类中的用法
  8. 百度token怎么获取_【专栏精选】实战:百度语音识别
  9. 60种提升自身能量的方法
  10. 微信小程序消息推送,实现未完成计划的在微信内的定时提醒功能