本文使用express作为服务端,使用express-fileupload库提供的中间件函数来接受从客户端传来的图片,并将图片作为文件存储在服务端。客户端使用create-react-app框架,bootstrap ui,axios发送http请求和提供进度条当前进度的值,上传成功后,根据图片在服务端上的位置,并显示图片。

初始化项目

安装一些必要依赖(dependencies)

更改 react-file-upload/package.json 中的 scripts 脚本

  • main 改为 server.js
  • start 使用 node 启动 express
  • server 使用 nodemon 启动 express ,nodemon会监视server.js文件是否有变动 (ctrl+s) 若有变动 重新启动服务器 而node启动则不会,需要手动重启服务(ctrl+c 且改动文件后重新运行 node server.js)
  • client 启动客户端 随后我们会创建 client 文件夹 编写 react 组件
  • dev 使用 concurrently 同时启动服务端与客户端

编写服务器

下面来编写 server.js 文件

现在运行一遍 server.js 保证无错误 会在控制台看到 server started…

初始化客户端

然后我们创建客户端 我们使用 create-react-app 脚手架初始化项目

初始化完成后 我们可以先选择性的删除一些不必要的文件

  • serviceworker.js
  • logo.svg
  • index.css    // 之后我们会用link标签从cdn引入bootstrap的
  • app.test.js  // 只是个小demo

我们删除 src / index.js 文件中引入的 index.css,在 public 文件夹中的 index.html 模板文件中,直接引入bootstrap 的 css 和 js

编写组件

我们总共需要编写3各组件,分别为

  • fileupload.js:用form标签的onsubmit和axios发送上传请求
  • message.js:显示信息 上传成功 服务器错误 或 没有选择文件
  • progress.js:用axios的onuploadprogress和bootstrap显示上传进度条

fileupload

message.js

progress.js

测试

目前为止,全部的功能组件都已完成。

最后附上git地址 git

到此这篇关于node.js使用express-fileupload中间件实现文件上传的文章就介绍到这了,更多相关node.js 文件上传内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!