后端代码

var express = require('express')
var app = express();
var fs = require('fs')
var http = require('http').createServer(app);
var server = app.listen(8082)
var io = require('socket.io')(server);
const multiparty = require('multiparty')
const path = require('path')
const body = require('body-parser')
app.use('/public', express.static('public'));
app.use(body.json());  //body-parser 解析json格式数据
app.use(body.urlencoded({            //此项必须在 bodyParser.json 下面,为参数编码extended: true
}));
app.all('*', function(req, res, next) {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");res.header("Access-Control-Allow-Headers", "name,age,Origin, X-Requested-With, Content-Type, Accept, Authorization");next();
});app.post('/a', (req, res) => {console.log(req.body)res.json({name: req.body.name,age: req.body.age})
})
app.get('/b', (req, res) => {console.log(req)res.json({name: req.query.name,age: req.query.age})
})
app.use('/upla',(req,res)=>{ // 接收文件上传let form = new multiparty.Form({uploadDir: './public' //指定上传的文件路径});form.parse(req, (err, field, files) => {let arr = files && files.file.map(x => { // 必须这样写fs.rename(x.path, './public/' + x.originalFilename, () => {console.log('改名')})})res.end(JSON.stringify({ok: 200}))})form.on('field', (name, value) => {// name:字段名// value:值console.log('数据:', name, value);})//接收文件数据form.on('file', (name, file) => {console.log('文件:', name, file);})//表单解析完成form.on('close', () => {console.log('完成');})
})
app.post('/send',async (req, res) => {function read () {return new Promise((resolve, rejects) => {fs.readFile('./public/2020.jpg',function(err, data) {resolve(data)rejects(err)})})}let data = await  read()res.send(data)
})
http.listen(3000, () => {console.log('listening on *:3000');
});
为socket.io
io.on('connection', (socket) => {console.log('a user connected');socket.on('message', data => {console.log(data);socket.broadcast.emit('gbmsg', data)})
});

前端vue加axios

axios封装import axios from 'axios'
const headers = {name: 'liu',age: '14'
}
const Api = function () {this.get = function (url, data) {return axios( {url: url,method: 'GET',params: {...data},headers: {...headers}} )}this.post = function (url, data) {return axios( {url: url,method: 'post',data: data,headers: {...headers}})}this.fileUpload = function (url, data) {return axios( {url: url,method: 'post',responseType: 'blob',data: data} )}
}axios.interceptors.request.use(suc => {console.log('req')return suc
}, (err) => {})
axios.interceptors.response.use(suc => {console.log('req')return suc
},(err) => {})
const http = new Api()
export default http

调用

import http from './api'http.get('http://localhost:3000/b', {name:'liu',age: '12'}).then(x => {console.log(x)
})
Vue.prototype.$http = httpthis.$http.post('http://localhost:3000/a', data).then(x => {console.log(x)})如下代码为文件上传<template><div id="app"><img :src="src" alt="12"><img :src="as" alt="12"><router-view/></div>
</template>
<script>
export default {data () {return {src: '',as: ''}},async created () {const data = {name: '刘勇',age: '12'}this.$http.post('http://localhost:3000/a', data).then(x => {console.log(x)})function blobToDataURI (blob) {return new Promise((resolve, reject) => {let reader = new FileReader()reader.readAsDataURL(blob)//blobreader.onload = function (e) {resolve(e.target.result)//base64}})}await this.$http.fileUpload('http://localhost:3000/send').then(async res=>{var body = document.bodyconsole.log(res)await blobToDataURI(res.data).then(reu => {this.src = reu})this.as = URL.createObjectURL(res.data)console.log(res.data)console.log(URL.createObjectURL(res.data))var a = document.createElement('a')a.setAttribute('href', URL.createObjectURL(res.data))body.appendChild(a)a.setAttribute('download','1.jpg')a.click()a.removeChild('a')
})}
}
</script>

2021/4/4号更新
application/x-www-form-urlencoded post 请求头
使用formData传值 使用 multipart/form-data 请求头 传参数

let form1 = new FormData()form1.append('user',this.form.user)form1.append('pass',this.form.user)this.$http('post','http://localhost:3000/upla',form1).then(res=>{console.log(res)})
var express = require('express')
var app = express();
var fs = require('fs')
const multiparty = require('multiparty')
const path = require('path')
const body = require('body-parser')app.use(body.json());  //body-parser 解析json格式数据
app.use(body.urlencoded({            //此项必须在 bodyParser.json 下面,为参数编码extended: true
}));
let form = new multiparty.Form()let arr = []form.parse(req,(err,field,files)=>{})form.on('field', (name, value) => {// name:字段名// value:值console.log('数据:', name, value);arr.push({name:value})})//接收文件数据form.on('file', (name, file) => {console.log('文件:', name, file);})//表单解析完成form.on('close', () => {console.log('完成');res.end(JSON.stringify({ok:arr}))})

axios封装nodejs前后端实现getpost文件上传相关推荐

  1. elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)

    1.介绍 本文主要是介绍前后端分离的上传下载,后端使用的是SpringBoot,持久层用的是mybatis-plus,前端用的Vue,UI用的elementUI,测试了一下,文本,图片,excel,都 ...

  2. springcloud feign前后端分离实现文件上传下载

    文件上传 一.服务消费者Controller package com.biddingportal.controller;import com.alibaba.fastjson.JSON; import ...

  3. 前后端分离跨服务器文件上传,SpringBoot+Vue.js实现前后端分离的文件上传功能

    这篇文章需要一定vue和springboot的知识,分为两个项目,一个是前端vue项目,一个是后端springboot项目. 后端项目搭建 我使用的是springboot1.5.10+jdk8+ide ...

  4. MdEditor-v3中上传照片的前后端对接(图片上传至又拍云云储存)

    MdEditor-v3中上传照片的前后端对接(图片上传至又拍云云储存) 使用springboot+MdEditor-v3+又拍云实现markdown的图片上传功能 需要有一定的springboot和v ...

  5. 若依前后端不分离项目上传文件或图片不能显示出来?

    很多初次使用若依前后端分离的时候,容易遇到这个问题,就是在文件上传成功的时候,在前端无法正常回显.在这里给不会的朋友写一个教程. 目录 1.前提说明 2.文件回显步骤 (1)添加文件访问前缀

  6. SSM项目/SpringBoot项目/SpringBoot+Vue前后端分离项目 图片上传并查看功能实现汇总

    SSM项目下的图片上传: 1.前端Js代码:用户点击"上传头像"按钮后,会执行uploadPhoto()的方法. <button type="button" ...

  7. 前后端分离之图片上传服务端处理方法

    最近公司做的项目基本上都是用的前后端分离的架构进行的.在图片上传这块处理是先将图片上传到开发者服务器上,然后返回该图片在服务器上的图片地址存到数据库中.存到数据库的时候存的并不是网络地址,而是图片的相 ...

  8. Html5+NodeJS——拖拽多个文件上传到服务器

    实现多文件拖拽上传的简易Node项目,可以在github上下载,你可以先下载下来:https://github.com/Johnharvy/upLoadFiles/. 解开下载下的zip格式包,建议用 ...

  9. Nodejs基于express+multer的文件上传

    概览 图片上传是web开发中经常用到的功能,node社区在这方面也有了相对完善的支持. 常用的开源组件有multer.formidable等,借助这两个开源组件,可以轻松搞定图片上传. 本文主要讲解以 ...

最新文章

  1. 为何多线程就能提高Java程序的执行效率
  2. android-Activity的执行流程
  3. 如何利用ESP8266模块实现远程控制
  4. python data analysis | python数据预处理(基于scikit-learn模块)
  5. Android开发中方法数超过65535的简单解决方法
  6. selenium IE 浏览器驱动下载地方
  7. MMDB ip地址库操作
  8. 看脸 高效学英语 下
  9. 非计算机专业《Python程序设计基础》教学参考大纲
  10. python井字格游戏_python实现简单井字棋游戏
  11. ker矩阵是什么意思_基向量、标准正交基、对称矩阵、Hermite阵
  12. 计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)
  13. 什么运动耳机好用,六款运动耳机值得推荐
  14. Oracle19c数据库安装教程【Windows版】
  15. MS-DOS系统的操作命令
  16. Grad-CAM可视化
  17. 中国二次锂离子电池电解液市场需求现状与销售策略分析报告2022-2028年
  18. 使用wrd2vec构建推荐系统
  19. 全方位了解平台爆款,解析B站热销商品,实现电商变现
  20. 高内聚,低偶合指的是什么?

热门文章

  1. 海思(MPP)媒体处理软件平台(3)-----VDEC
  2. 我写小程序像菜虚鲲——2、
  3. 36.TodoList动画
  4. 四川智汇蓝图科技公司是怎样把网站口碑推广做好的
  5. 关于ppt转换成pdf的详细操作
  6. JWT黑名单和白名单
  7. 编程英语词汇大全java_java编程常用英文单词汇总.doc
  8. Juniper SSG 550M NSRP配置文档
  9. 我把 Python 协程的本质扒得干干净净
  10. 创城优化窗口服务器,提升窗口服务,助力创城工作