前端Ajax后端Express+multer实现多文件上传

  • 业务描述

某项目需要从一批shp文件,并从中提取信息。

  • 前端页面
<form id="form1" action="#" method="POST" enctype="multipart/form-data">
  <div class="info">
	<label for="stage">期数</label>
	<input type="text" id="stage" name="stage"><br>
	<label for="time">时间</label>
	<input type="text" id="time" name="time"><br>
	<label for="annotation">annotation</label>
	<input type="text" id="annotation" value="month" name="annotation">
  </div>
  <div class="files">
	<label for="xzgd">新增供地</label>
	<input type="file" id="xzgdfile" name="xzgd" multiple="multiple"><br>
	<label for="xzpd">新增批地</label>
	<input type="file" id="xzpdfile" name="xzpd" multiple="multiple"><br>
	<label for="gewy">供而未用</label>
	<input type="file" id="gewyfile" name="gewy" multiple="multiple"><br>
	<label for="pewg">批而未供</label>
	<input type="file" id="pewgfile" name="pewg" multiple="multiple"><br>
  </div>
  <div class="submit">
	<input type="button" value="上传" onclick="upload()">
  </div>
</form>
  • 前端逻辑

upload中会对数据做一些检查

$.ajax({
  type: 'POST',
  dataType: 'json',
  url: '/你的接口地址',
  data: new FormData($('#form1')[0]),
  processData: false,
  contentType: false,
  success: result => {
	alert(result.msg)
  },
  error: err => {
	alert('上传数据发生错误!')
  }
})
  • 后端逻辑

安装中间件 

npm i multer

指定缓存路径

// 确保路径存在
if(!fs.existsSync(tempDataPath)) {
    fs.mkdirSync(`./${tempDataPath}`)
}
const update = multer({
    dest: tempDataPath // 缓存路径
})

 文件接收及处理

router.post('/你的接口', update.fields([
    {name:'xzpd'},
    {name:'xzgd'},
    {name:'pewg'},
    {name:'gewy'}
]), async function (req, res) {
    // 解析参数
    const { body: stageInfo, files } = req
    const { stage, time, annotation } = stageInfo
    //...
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值