nodejs实现文件传输保存

今天利用node做一个文件上传功能,
使用场景:这个在我们很多的应用当中都会遇到,比如我们注册用户,注册用户的时候都会要求上传头像;比如说大家做订单系统,商品有问题、故障,订单肯定会有退换货功能吧,要求上传图片等等。
但是具体怎么操作,咋们一步一步来
1.0 安装express模块

$ npm install express

1.1 这里我们用到formidable模块
(在npm包管理器中,介绍这是一个Node.js模块,用于解析表单数据,特别是文件上传。)

formidable.png

$ npm install formidable

1.2 创建文件一个file文件
(创建文件这个就不细说了,看图就可以)

文件.png

这里主要创建了两个文件夹public我用来放中间件和uploads用来存放图片,以及一个app.js文件。
1.3 在public下写一个fileuploads.html文件
(写个表单,然后用ajax上传)↓


    
    

With "express" npm package

标题:
File:

这里用了一个普通表单,给submit提交绑定了一个事件监听,因为点击会全页面刷新,(上传文件不需要跳转页面,我这里是服务端返回一个json数据),利用formDate构建ajax提交的数据。剩下就是一个ajax发送post请求,成功就返回data数据
formDate <
1.4 app.js

//引入模块
const express = require('express')
const cors = require('cors')
const userFile = require('./public/files')    // ! files 模块
//调用模块,创建应用
const app = express()
app.use(cors()) //跨域问题
app.use(express.static('public'))   // ! 托管静态资源
app.use('/public/files',userFile)  //静态路由,用use把router添加到中间件处理路径,我们就可以在主应用中,使用这个模块中的路由模块
// ! 设置监听 8527 端口,到时候我们在浏览器就访问这个端口
app.listen(8527,()=>console.log("server running succeed"))

先引入我们要用到的模块
用static中间件来托管静态文件,包括图片、CSS 以及 JavaScript 文件(其实 static() 是 Express 提供的原生中间件函数之一)
因为涉及到跨域(CORS)(或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协议和端口),这样浏览器可以访问加载这些资源。
一个nodejs模块

安装 npm install cors
用法: const cors = require('cors')
app.use(cors())

1.5 在public下创建files.js文件

//引入router方法,实现路由模块化
const formidable = require('formidable')
const path = require('path')
const fliesRouter = require('express').Router()

fliesRouter.post('/student',(request,response,next) => {
    const form = formidable({
        uploadDir: path.join(__dirname, '../uploads'), // 上传文件放置的目录
        keepExtensions: true,           //包含源文件的扩展名
        multiples: true                 //多个文件的倍数
      })
    
      // 从请求中解析提交的数据(包括文本与文件数据)
      // fields 中保存的是文本数据信息
      // files 中保存的是文件数据相关信息
      form.parse(request, (err, fields, files) => {
        if (err) {  
          next(err)
          return
        }
        response.json({      //响应json数据
          code: 200,
          data: { fields, files }
        })
      })
    })
//导出
module.exports = fliesRouter

介绍:
首先 require() 路由模块(files.js),然后在 Express 应用中调用 use() 把 Router 添加到中间件处理路径中,就可以在主应用中使用这个模块中的路由处理器了。
这个模块主要是对post请求的处理,
uploadDir:用于放置上传文件的目录。以后可以使用fs.rename()来移动它们。
keepExtensions: {boolean}默认false ,是否包含原始文件的扩展名
multiples:当你调用.parse方法时,files参数(回调函数的)将包含使用HTML5 multiple属性提交多个文件的输入文件数组。fields参数将包含名称以'[]'结尾的字段的值数组。
formidable npmjs有介绍
express.Router mdn也有介绍

然后我们在cmd 中启动node 监听

开启.png
最后在浏览器中打开
node文件上传.gif

上传文件到服务器到这里就完成了,哈哈哈这个图有点大,将就看

你可能感兴趣的:(nodejs实现文件传输保存)