koa --- 使用koa-multer和element-ui组件上传头像

文件上传

  • 前端代码
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<linkrel="stylesheet"href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"
/>
<div id="app"><el-uploadclass="avatar-uploader"action="http://localhost:3000/users/upload":show-file-list="false":on-success="handleUploadSuccess":before-upload="beforeUploadUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload>
</div>
<script>var app = new Vue({el: "#app",data(){return :{imageUrl: ""};},methods: {handleUploadSuccess(res, file){this.$message.success("上传头像成功");this.imageUrl = URL.createObjectURL(file.raw);},beforeUploadUpload(file){const isJPG = file.type === 'image/jpeg';const isLt2M = file.size / 1024 /1024 < 2;if(!isJPG) {this.$message.error("上传头像图片只能是 JPG 格式!");}if(!isLt2M){this.$message.error("上传头像图片大小不能超过 2MB!");}return isJPG && isLt2M;}}})
</script>
  • 说明:
  1. vscode使用alt+b打开html文件,使用的协议是file.
  2. el-upload中的action属性,是点击后请求的路由连接,是http协议(后端需要设置跨域)
  3. on-success: 成功后前端的回调
  4. before-upload: 发出ajax请求前,进行校验
  5. this.$message: 是element-ui的消息函数.
const Koa = require("koa");
const app = new Koa();
const Router = require("koa-router");
const router = new Router({prefix,"/users"});
const cors = require("koa2-cors");const __ROOTDIR__ = "./public/images";
const upload = require("koa-multer")({dest: __ROOTDIR__});app.use(cors());router.post("/upload", upload.single("file"), ctx=>{ctx.body ="上传成功"
})
  • 说明:
  1. __ROOTDIR__: 代表上传的资源存储的文件目录
  2. upload.single: 是koa-multer库提供的一个函数,上传一个文件

美化一下前端代码:

  • upload.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src="https://unpkg.com/element-ui/lib/index.js"></script><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><style>.avatar-uploader .el-upload{border: 1px dashed #d9d9d9;border-radius: 6px;cursor: pointer;position: relative;}.avatar-uploader-icon{font-size: 28px;color: #8c939d;width: 178px;height: 178px;line-height: 178px;text-align: center;}.avatar{width: 178px;height: 178px;display: block;}</style><title>文件上传</title>
</head>
<body><div id="app"><!-- ajax方式上传--><el-uploadclass="avatar-uploader"action="http://localhost:3000/users/upload":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload></div><script>var app = new Vue({el:"#app",data(){return {imageUrl:""};},methods: {handleAvatarSuccess(res, file){this.$message.success("上传头像成功");this.imageUrl = URL.createObjectURL(file.raw);},beforeAvatarUpload(file) {const isJPG = file.type === 'image/jpeg';const isLt2M = file.size / 1024 / 1024 < 2;if(!isJPG){this.$message.error("上传头像图片只能是 JPG 格式!");}if(!isLt2M){this.$message.error("上传头像图片大小不能超过 2MB!");}return isJPG && isLt2M;}},})</script>
</body>
</html>

启动后端

nodemon user.js

在这里插入图片描述
在这里插入图片描述

在Public/images下可以看见上传的图片

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

koa --- nunjucks在Koa中的使用、中间件的配置

Nunjucks在Koa中的应用 app.js const koa require(koa); const app new koa(); const router require(./router) const nunjucks require(koa-nunjuncks-2); app.use(nunjucks({ext: html, // 指定视图文件默认后缀path: path.join(__dirname, views), // 指定视图目录…

2018福大软工实践第六次作业

目录 NABCD分析引用N(Need&#xff0c;需求)&#xff1a;A(Approach&#xff0c;做法)&#xff1a;B(Benefit&#xff0c;好处)&#xff1a;C(Competitors&#xff0c;竞争)&#xff1a;D(Delivery&#xff0c;交付)&#xff1a;初期中期个人贡献分评定原则评定细则本组现场答辩…

day32—CSS多列布局学习

转行学开发&#xff0c;代码100天——2018-04-17 关于多列布局&#xff0c;前期已经梳理过&#xff0c;今天的培训课程学习中再次提及&#xff0c;趁此也做个总结和检验。 多列布局的介绍参考&#xff1a; day08—css布局解决方案之多列布局关于多列布局的类型和方法&#xff1…

JDBC 事物处理

JDBC 事物处理 •事务&#xff1a;指构成单个逻辑工作单元的操作集合 •事务处理&#xff1a;保证所有事务都作为一个工作单元来执行&#xff0c;即使出现了故障&#xff0c;都不能改变这种执行方式。当在一个事务中执行多个操作时&#xff0c;要么所有的事务都被提交(commit…

centos6上安装mysql8.0版本

本博客是采用yum源的方式安装&#xff0c;非常的方便和快捷。(redhat 与centos7 等操作系统都可以采用此方法&#xff0c;步骤大体一致) mysql官网地址: https://dev.mysql.com 开始安装&#xff1a; 1.清理环境&#xff0c;查看有没有之前安装过的mysql记录&#xff0c;清理…

koa --- 使用koa-multer上传文件+elementUI

核心代码 const upload require(koa-multer) ({dest: ./public/images}); router.post(/upload, upload.single(file), ctx>{console.log(file, ctx.req.file);console.log(body, ctx.req.body);ctx.body 上传成功; })目录结构如下 基本思路 1.通过浏览器访问url: http:…

第二篇 python基础知识总结:数据、运算符

引子 我们跟任何人交流&#xff0c;说的每一句都是都一些文字组成&#xff0c;包含名词、动词、语句、标点符号等&#xff0c;组成我们说普通话构成的基本要素。同理我们学习python语言也要明白这些基本要素&#xff0c;也就是我们常说的基本语法&#xff0c;这是我们必须掌握的…

koa --- 使用Sequelize连接mysql

Sequelize介绍 为了快捷开发,社区出现了一系列的ORM(Object Relational Mapping)类库ORM的字面意思为对象关系映射,它提供了概念性的、易于理解的模型化数据的方法。通过ORM,可以降低操作数据库的成本。开发者不需要通过编写SQL脚本来操作数据库,直接通过访问对象的方式来查询…

Android gravity和layout_gravity的区别

一、gravity和layout_gravity相同处 两者都是设置对齐方式的属性。内部的属性值相同。 根据英文意思也能理解其中的意思。如center_horizontal表示在水平方向上的位置为中间。 二、gravity和layout_gravity的不同处 gravity是设置自身内部元素的对齐方式。比如一个TextView&…

koa --- mongoose连接mongoDB

使用Mongoose对MongoDB进行操作 const mongoose require(mongoose); mongoose.connect(mongodb://localhost/test,{ })Mongoose中的Schema 定义Schema categorySchema const categorySchema new mongoose.Schema({name:String,description: String,createdAt:{type: Date,…

Java Web 请求转发与请求重定向

Java Web 请求转发与请求重定向 请求转发 服务器行为&#xff0c;即用户向服务器发送了一次http请求&#xff0c;该请求可能会经过多个信息资源处理以后菜返回给用户&#xff0c;各个信息资源使用请求转发机制互相转发请求&#xff0c;但是用户是感觉不到请求转发的。通过req…

05.RDD详解

05.Spark--RDD详解 RDD详解--groupByKey--reduceByKey [MapPartitionRDD单词统计] 单词统计 import org.apache.spark.{SparkConf,SparkContext} object WordCountScala{def main(args:Array[String]):Unit{//创建spark配置对象val confnew SparkConf()conf.setAppName("W…

Mininet

首先&#xff0c;我折腾了两周多的东西终于弄出一点眉目了。 有以下几个内容需要学习记忆一下。 1.虚拟机&#xff0c;弄不出来共享文件夹&#xff0c;就用U盘吧&#xff0c;贼快还不用安装配置各种东西&#xff0c;virtualbox和VMware都支持。 2.ubantu安装软件中途失败&#…

docker --- 使用docker-compose.yml生成redis,并连接redis-cli

docker.compose.yml 配置 version: 3.1 services:redis:image: redisports:- 6379:6379命令行:docker-compose up 查看: docker ps 进入redis-cli,输入以下 docker exec -it 7dc0a redis-cli -h localhost -p 6379 操作Redis数据 设置 namemarron set name marron 获取nam…

浅谈javaweb三大框架和MVC设计模式

浅谈javaweb三大框架和MVC设计模式转载自&#xff1a;http://blog.csdn.net/sunpeng19960715/article/details/50890705 小序&#xff1a;博主以前在学javaweb的时候开始总不理解javaweb三大框架和MVC框架模式&#xff0c;虽然没有把两者混为一谈&#xff0c;但是也是很晕菜。…

win下配置nginx

1.下载:http://nginx.org/en/download.html 2.在安装目录cmd: start nginx.exe 启动nginx 3.修改默认运行端口80(nginx.conf): HTTP 数据分发 修改配置文件nginx.conf相应节点: 修改完后重启服务: nginx -s reload TCP 数据分发: nginx 1.9以上版本支持tcp转发 配置文件中增加:…

koa --- koa-bouncer验证

使用 koa-bouncer中间件对传入的数据进行验证 const bouncer require(koa-bouncer); app.use(bouncer.middleware());const val async (ctx, next) > {ctx.validateBody(name).required(要求提供用户名).isLength(6, 16, 用户名长度应该为6~16).isString().trim()next();…

fiddler2抓包数据工具使用教程

一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据&#xff0c;可以用其检测网页和服务器的交互情况&#xff0c;能够记录所有客户端和服务器间的http请求&#xff0c;支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于…

egg --- 初始化一个egg项目基本结构说明

Egg.js体验 全局安装 // 创建项目 $ npm i egg-init -g $ egg-init egg-example --typesimple $ cd egg-example $ npm i// 启动项目 $ npm run dev $ open localhost:7000Egg.js的结构 路由(Router): 将请求URL和具体承担执行动作的Controller的关系对应控制器(Controller)…

葫芦娃

葫芦娃救爷爷 1.队名——代码那些事儿 2.团队成员 刘佳 211606320&#xff08;队长&#xff09;李佳 211660313周世元 211606348王浩 211606378曾丽丽 211606302陈水莲 211606303许燕婷 211606338杨小妮 2116063413.队长博客链接 -https://www.cnblogs.com/LJ-D/p/9799944.html…