NodeJS + Express 文件上传功能

NodeJS + Express 文件上传功能

基于node.js express框架,借助multer或connect-multiparty中间件,我们可以实现一个文件上传功能。

下面将利用node.js express框架实现一个文件上传功能,并将上传的文件储存在项目下的tmp文件夹中:

1、使用multer中间件实现

multer中间件是用来处理multiparty/form-data类型的表单数据,用于文件上传.

安装文件上传所需模块:npm install body-parser multer

2、文件上传项目整体结构:

在public下的index.html实现一个表单:

<form action="http://127.0.0.1:3000/fileUpload" method="POST" enctype="multipart/form-data">
  <label for="file">上传文件:</label>
  <input type="file" name="file" id="file"><br />
  <input type="submit" value="提交">
</form>

在index.js 编写文件上传接口:

var express = require('express');
var app = express();
const fs = require('fs')
const pathLib = require('path')
// 引入body-parser中间件,用来处理post请求体body中的数据
const bodyParser = require('body-parser')
// 引入multer中间件,用于处理上传的文件数据
const multer = require('multer')


const server = app.listen(3000, function(){
  console.log('express + multer 实现文件上传')
})

app.get('/', function(res, rep) {
    rep.send('Hello, word!');
});

// 读取静态资源
app.use(express.static('public'))
// 通过配置multer的dest属性, 将文件储存在项目下的tmp文件中
app.use(multer({ dest: './tmp/' }).any())

// 访问index.html页面
app.get('/index.html', function(req, res){
  // 将public下的index.html文件返回去
  res.sendFile(__dirname + '/index.html')
})

// 文件上传接口
app.post('/fileUpload', function(req, res){
  // 上传的文件在req.files中
  const filename = req.files[0].path + pathLib.parse(req.files[0].originalname).ext
  console.log(filename);
  fs.rename(req.files[0].path, filename, function(err){
    if(err){
      res.send(err)
    }else{
     res.send('upload successfully')
    }
  })
})

执行node index.js代码,在浏览器中访问http://localhost:3000/index.html打开文件上传页面,文件上传成功后,在项目下会出现tmp文件夹,里面就是上传的文件;

注意的是:文件上传接口在接收到的文件req.files[0]的文件名和路径均不带文件后缀名 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值