vue从node服务器获取文件,前端全栈入门(1)Vue+nodejs(express) 实现文件上传

2023-11-05

Vue+Nodejs 实现图片上传

图片上传在平时的业务开发中应该算是个标配的需求,这里分享下使用Vue和Nodejs简单的实现下该需求

流程图(简单画一个)

bVbx2Dw?w=1392&h=1038

使用 vue-cli 创建一个最简单的 vue 项目

确保 vue cli 是最新的,如果无法确定可以执行2行命令 npm uni -g vue-cli npm i -g @vue/cli

vue create image-uploader

使用自定义创建

Vue CLI v3.11.0

? Please pick a preset:

default (babel, eslint)

❯ Manually select features

并且选项的时候自需要选择基本的配置

Vue CLI v3.11.0

? Please pick a preset: Manually select features

? Check the features needed for your project:

◉ Babel

◯ TypeScript

◯ Progressive Web App (PWA) Support

◯ Router

◯ Vuex

❯◉ CSS Pre-processors

◯ Linter / Formatter

◯ Unit Testing

◯ E2E Testing

修改 App.vue 中的代码如下

选择文件

上传

上传进度

export default {

name: 'app',

data(){

return{

file:'',

percentCompleted:0

}

},

computed: {

style(){

return {

width:this.percentCompleted+'%'

}

}

},

methods: {

async submit(){

const formData = new FormData();

formData.append('file',this.file);

},

fileSelect(){

let file = this.$refs.file.files[0];

this.file = file;

}

},

}

.progress-wrap{

width: 300px;

p{

width: 100%;

}

.progress{

background-color: #c5c8ce;

height: 20px;

span{

display: block;

background-color: #19be6b;

height: 100%;

width: 0;

}

}

}

这样基本的 文件上传的form就编写完毕,通过 npm run serve 查看页面效果

创建API 服务项目

mkdir api

cd api

npm init -y

npm i express -S

上面的命令主要是,创建一个api文件夹,用 npm 初始化这个文件夹, 按照 node web 框架 express;完成上述的操作之后,就可以编写 app.js 作为 web服务的入口文件,

// app.js

const express = require('express')

const port = 3000;

const app = express();

// 处理文件上传的请求

app.post('/upload',(req,res)=>{

res.json({

file:req.file

})

})

app.listen(port,()=>{

console.log(`api服务启动成功,端口监听:${port}`)

})

安装 nodemon 这是一个可以让我们修改后端代码之后,自动帮助我们启动服务的工具

npm i nodemon -D

在package.json 中配置 api服务启动命令

// 部分 package.json

"scripts": {

"dev": "nodemon app.js"

},

运行 服务 npm run dev;这个时候当我们使用 post的方式 http://127.0.0.1:3000/upload的时候,会得到响应。修改UI项目中的 app.js:

按ajax库 axios

npm i axios -D

修 app.js 代码如下

// App.vue

选择文件

上传

上传进度

import axios from 'axios'

export default {

name: 'app',

data(){

return{

file:'',

percentCompleted:0

}

},

computed: {

style(){

return {

width:this.percentCompleted+'%'

}

}

},

methods: {

async submit(){

const formData = new FormData();

formData.append('file',this.file);

await axios.post('http://127.0.0.1:3000/upload',formData,{

onUploadProgress:(progressEvent)=>{

var percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total );

this.percentCompleted = percentCompleted

}

});

},

fileSelect(){

let file = this.$refs.file.files[0];

this.file = file;

}

},

}

.progress-wrap{

width: 300px;

p{

width: 100%;

}

.progress{

background-color: #c5c8ce;

height: 20px;

span{

display: block;

background-color: #19be6b;

height: 100%;

width: 0;

}

}

}

OK,到现在只是完成了基本的前后端项目的架构;下面需要解决2个问题:

前后端因为访问在不同的端口,需要解决跨域的问题

后端没有对应的文件上传的处理

解决上面的2个问题,自需要在api服务项目中安装2个库就可以了

npm i cors multer -S

然后修改 app.js

// app.js

const express = require('express');

const cors = require('cors');

const multer = require('multer');

const app = express();

app.use(cors());

const upload = multer({

dest:'./upload'

})

app.post('/upload',upload.single('file'),(req,res)=>{

res.json({

file:req.file

})

})

app.listen('3000',()=>{

console.log('sds')

})

OK,这样就完成了整个文件上传的基本功能

源代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue从node服务器获取文件,前端全栈入门(1)Vue+nodejs(express) 实现文件上传 的相关文章

  • python爬虫--beautifulsoup使用介绍

    简单来说 Beautiful Soup是python的一个库 最主要的功能是从网页抓取数据 官方解释如下 Beautiful Soup提供一些简单的 python式的函数用来处理导航 搜索 修改分析树等功能 它是一个工具箱 通过解析文档为用
  • 如何解决 Spring JPA @Table 和 @Column 失效的问题

    问题 下面的代码 我们使用 Spring JPA 作为数据库访问层 并且用 Table 和 Column 定义了表和列名 但是 Hibernate 给出的 SQL 语句并没有使用我们定义的名称 节点 Entity Table name No
  • 2021江苏连云港高考成绩查询时间,2021连云港市地区高考成绩排名查询,连云港市高考各高中成绩喜报榜单...

    距离2018年高考还有不到一个月的时间了 很多人在准备最后冲刺的同时 也在关心高考成绩 2018各地区高考成绩排名查询 高考各高中成绩喜报榜单尚未公布 下面是往年各地区高考成绩排名查询 高考各高中成绩喜报榜单 想要了解同学可以参考下 同时关
  • 实现vector--模板

    在这里 我把类函数定义与声明分开了 以下是类定义与类函数的声明 vector h pragma once include
  • iOS APP上架流程详解

    iOS APP上架流程详解 前言 作为一名 iOS 开发工程师 APP 的上架是必备技能 iOS 上架的流程主要可以简单总结为 一个包 两个网址 三个证书 一个包 iPA 包 上架用的 两个网址 1 gt https itunesconne
  • 【管理篇 / 配置】❀ 06. 日志与监控 ❀ FortiGate 防火墙

    简介 在这个实验里 你将在FortiGate飞塔防火墙本地配置日志设置 配置警告邮件和显示日志 在防火墙上配置日志 为了记录网络活动 你必须在FortiGate配置日志 在这人练习里 你将配置日志设置 包括威胁权重以及在防火墙启用日志 使用
  • 【BUG】Windows配置spark运行cmd时报错:WARN ProcfsMetricsGetter: Exception when trying to compute pagesize,...

    报错 WARN ProcfsMetricsGetter Exception when trying to compute pagesize as a result reporting of ProcessTree metrics is st
  • CTF.show:web11

    代码审计
  • 8.29网络编程作业

    include
  • MySQL存储引擎

    MySQL自我学习路线 一 存储引擎概述 二 MySQL常用存储引擎 1 MyISAM 节省空间 1 1 特点 2 InnoDB 默认引擎 安全 2 1 特点 3 MEMORY 查询快 3 1 特点 三 存储引擎的选择 一 存储引擎概述 数
  • Java是如何实现跨平台功能的?

    Java是一种高级编程语言 最初被设计为能够在任何计算机上运行 而不受硬件和操作系统的限制 它实现了跨平台功能的方式是使用Java虚拟机 JVM 本文将介绍Java是如何实现跨平台功能的 Java虚拟机 JVM 在Java中 源代码是编写在
  • Verdi/Coverage tool 学习 第1节(入门篇)

    目录 1 Verdi Coverage 工具概述 2 VCS使用实例 3 VCS中的覆盖率分析 3 1 覆盖率类型 3 2 Coverage Database的产生 3 3 其他的vcs编译和仿真中的选项 3 4 有时需要Merge 多个C
  • arch linux 文档下载_技术茶话会

    1 安装适用于 Linux 的 Windows 子系统 在安装适用于 WSL 的任何 Linux 分发版之前 必须确保已启用 适用于 Linux 的 Windows 子系统 可选功能 1 以管理员身份打开 PowerShell 并运行 Po
  • C#异常总结

    C 异常总结 定义 Try语句 异常类 创建用户自定义异常 搜索调用栈的示例 异常抛出 定义 程序中的运行时错误 它违反一个系统约束或应用程序约束 或出现了在正常操作时未预料的情形 Try语句 指明被异常保护的代码块 并提供代码以处理异常
  • [转载-Cayden推荐-好文章]【国产替代】盘点下我所认知的国产MCU

    国产替代 盘点下我所认知的国产MCU 电子元件涨价和缺货是多少嵌入式工程师的痛 一年内上游厂家晶圆产能告急能有数十次之多 而MCU更是重灾区 且不说国内有超75 的市场都是被国外产品占据 就是本国内的代理和供应商也是漫天要价 而交期更是长达
  • POJ--2389:Bull Math 大数乘法

    题目源地址 http poj org problem id 2389 程序源代码 include
  • 力扣OJ(0801-1000)

    目录 802 找到最终的安全状态 805 数组的均值分割 809 情感丰富的文字 810 黑板异或游戏 813 最大平均值和的分组 817 链表组件 822 翻转卡片游戏 823 带因子的二叉树 827 最大人工岛 837 新 21 点 8
  • 知识图谱入门一:知识图谱介绍

    注 欢迎关注datawhale https datawhale club 系列 知识图谱入门一 知识图谱介绍 知识图谱入门2 1 实践 基于医疗知识图谱的问答系统 知识图谱入门2 2 用户输入 知识库的查询语句 知识图谱入门2 3 Neo4

随机推荐

  • 性能测试【一】

    目录 为什么要进行性能测试 性能测试关注什么 系统性能测试的流程 如何确定性能测试的需求 关键性能指标分析 关键业务分析 谁关注性能 概念 并发用户数 响应时间 RT 平均响应时间 ART 事务响应时间 TRT 每秒事务通过数 TPS 点击
  • 每日记录的名句

    每日记录的名句 学而优则仕 因为我比昨天更成熟了
  • vue 实现自定义主题切换+日夜切换

    不多废话 直入主题 文末会附上git代码链接 自定义主题切换 概述 一般主题切换为两种需求 主题色切换 日夜切换 主题色切换 基于elementUI 1 最开始想的是直接通过 el style setProperty el color pr
  • 【2023最新】LVGL 拖控件SquareLine Studio 激活安装教程(附工具,亲测有效)

    SquareLine Studio是LVGL拖控件开发界面 可以便捷地设计界面并一键生成C代码和python代码导出 目前支持的LVGL版本为8 2和8 3 6 安装不登录即可试用使用 个人版有5个屏幕 50控件限制 此教程支持window
  • 亲密关系-【舒适退出】-减少伤害的终局沟通

    一段关系的终结可能有很多原因 退出本质是一场自我沟通 想清楚 少后悔 不绝望 案例 三观不合 男朋友大男子主义 要分手 对方解释 保证 来回好几次 筋疲力尽 你根据什么得出三观不合的结论 你认为更值得相信的 究竟是自己的观察 还是对方的解释
  • frpc windows客户端启动报EOF的问题

    frpc windows客户端使用启动命令 frpc exe c frpc ini启动时会报错EOF 如下图 此时查看frpc log日志 可以发现报错为 也就是连接frps服务端失败了 可以在frpc ini配置文件中添加一行配置 也就是
  • tomcat 配置环境变量

    最近换电脑 备注一下 tomcat 环境变量配置 1 官网下载 tomcat 并解压 tomcat官网 https tomcat apache org 选择要下载的版本 下载 根据自己的电脑环境选择下载 笔者电脑是64位windows 下载
  • 基于邻接矩阵的广度优先搜索遍历

    数据结构实验图论一 基于邻接矩阵的广度优先搜索遍历 Time Limit 1000MS Memory limit 65536K 题目描述 给定一个无向连通图 顶点编号从0到n 1 用广度优先搜索 BFS 遍历 输出从某个顶点出发的遍历序列
  • Mybatis常用代码

    以下使用的数据库是Mysql Mybatis字段类型映射 在resultMap 中定义数据库字段对应的字段类型
  • C++ 类 :有参数构造函数与无参数构造函数使用注意事项

    构造函数的作用是在创建类的对象时进行类对象初始化的 在 C 中 每个类都有且必须有构造函数 如果用户没有自行编写构造函数 则 C 自动提供一个无参数的构造函数 称为默认构造函数 这个默认构造函数不做任何初始化工作 一旦用户编写了构造函数 则
  • BufferReader与BufferInputStream 区别及用法

    以reader结尾的都是以字符方式读入 而以stream结尾的都是字节形式 import java io BufferedReader import java io FileInputStream import java io IOExce
  • can差分线阻抗_CAN最全知识点汇总

    最近在学习CAN通讯 花费好多时间搜索资料 网络上大多数资料都是泛泛而谈 或者只是将CAN标准的文字罗列出来 看起来不够直观 不过 也找到了一些写的很好的资料 我将这些资料中对CAN知识点描述比较好的部分汇总起来并在某些地方添加一些例子 方
  • Redis模糊匹配并删除Key

    文章目录 1 登录可以连接Redis的机器 安装Redis 2 执行以下命令 删除模糊匹配到的Key 3 案例 4 相关文章 1 登录可以连接Redis的机器 安装Redis 详情请参见redis cli连接 2 执行以下命令 删除模糊匹配
  • 《python数据分析与挖掘实战》笔记第4章

    文章目录 第4章 数据预处理 4 1 数据清洗 4 1 1 缺失值处理 4 1 1 异常值处理 4 2 数据集成 4 2 1 实体识别 4 2 2 冗余属性识别 4 3 数据变换 4 3 1 简单函数变换 4 3 2 规范化 4 3 3 连
  • HDS存储链路的一个问题

    新上线的HDS AMS1000 由于光纤交换机还未到位 于是先采用两块光纤卡与存储直连的方式连接 安装配置时一切正常 第二天回到公司 进行性能测试时 发现dd copy的速度只能到100M s的速度 真是晕死 more 于是开始查原因 在d
  • 使用公式与格式控制Excel快速实现计划甘特图

    项目中都会遇到做任务计划的需求 有的客户要求需要有甘特图的形式 本文介绍如何使用excel 单元格实现甘特图显示 调整任务时间自动填充单元格填色实现甘特图效果 废话不多说 先看效果 准备工作先创建两列开始时间与完成时间 这样有一个时间区间了
  • 共享库的兼容性

    1 共享库的更新 1 由于Bug的修正 新功能的增加 性能的提升 共享库需要不断的更新版本 2 共享库的更新可以被分为两类 兼容性更新和不兼容更新 3 不兼容更新 共享库改变了原有的接口 使用该共享库原有接口的程序可能不能运行或者运行不正常
  • java连接sqlserver2005 tcp 有时超时,sqlserver 2005连接超时采用bat命令解决

    将以下内容保存为 openSql bat 双击运行即可 echo SQL Server Ports echo Enabling SQLServer default instance port 1433 netsh firewall set
  • MoveIt编程实现笛卡尔空间机械臂运动

    前两篇文章是关于在关节空间中进行机械臂的运动控制 MoveIt简单编程实现关节空间机械臂运动 逆运动学 MoveIt简单编程实现关节空间机械臂运动 正运动学 通过对关节空间下的机器人6个轴进行控制 每个轴的变化都是通过插补进行完成运动 六个
  • vue从node服务器获取文件,前端全栈入门(1)Vue+nodejs(express) 实现文件上传

    Vue Nodejs 实现图片上传 图片上传在平时的业务开发中应该算是个标配的需求 这里分享下使用Vue和Nodejs简单的实现下该需求 流程图 简单画一个 使用 vue cli 创建一个最简单的 vue 项目 确保 vue cli 是最新