vue小记——上传图片小组件

 个人笔记

前端:

<template><el-uploadclass="avatar-uploader"name="image"action="http://127.0.0.1:3000/api/image/upload":show-file-list="false":headers="headerObj":data="DataForm":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload":on-preview="handlePictureCardPreview"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload>
</template><script>
export default{date(){return:{headerObj: {Authorization: localStorage.getItem("mytoken"),},imageUrl:"",DataForm: {},}},methods:{//控制图片预览窗口的显示与隐藏beforeAvatarUpload(file) {this.DataForm = {code: this.ruleForm.code,user: this.$store.getters.user.name,};console.log(this.DataForm);console.log(file.type);const isJPG = file.type === "image/jpeg";const isPNG = file.type === "image/png";const isLt2M = file.size / 1024 / 1024 < 2;if (!(isJPG || isPNG)) {this.$message.error("上传头像图片只能是 JPG 格式!");}if (!isLt2M) {this.$message.error("上传头像图片大小不能超过 2MB!");}return (isPNG || isJPG) && isLt2M;},handleAvatarSuccess(res, file) {if (res.status == "1") return this.$message.error(res.message);this.imageUrl = res.imageUrl;this.$message.success("修改头像成功");console.log(this.DataForm);},handlePictureCardPreview(file) {this.dialogImageUrl = file.url;this.dialogVisible = true;},}
}</script>

后端(node.js):

router:

const express= require('express')
const router=express.Router()
const imageHandler=require('../router_handler/images.js')
const multer=require('multer')//磁盘存储引擎,可以控制文件的存储,省略的话这些文件会保存在内存中,不会写入磁盘
const storage=multer.diskStorage({destination:(req,res,cb)=>{//控制文件的存储路径cb(null,'public/images')},filename:function(req,file,cb){cb(null,file.fieldname + '-' + Date.now() + '-' + file.originalname)}
})
const upload=multer({storage:storage})router.post('/upload',upload.single('image'),imageHandler.upload)module.exports=router

router_handler:

const db = require("../db/index");const imageHandler = {upload: (req, res) => {const sql = 'update proj set image=? where code=? and user=?;'const imageUrl = `http://127.0.0.1:3000/images/${req.file.filename}`// console.log(avatarUrl);// 执行sql语句db.query(sql, [imageUrl, req.body.code,req.body.user], (err, results) => {// sql语句执行错误if(err) return res.cc(err)// sql语句执行成功,但影响的条数部位1属于执行失败if(results.affectedRows !== 1) return res.cc('上传图片失败!')// 更换头像成功res.json({msg:'上传成功',imageUrl:imageUrl})})},
};module.exports = imageHandler;

一定要加上这句

app.use(express.static('public'))

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

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

相关文章

【加密与解密(第四版)】第十二章笔记

第十二章 注入技术 12.1 DLL注入方法 在通常情况下&#xff0c;程序加载 DLL的时机主要有以下3个&#xff1a;一是在进程创建阶段加载输入表中的DLL&#xff0c;即俗称的“静态输人”;二是通过调用 LoadLibrary(Ex)主动加载&#xff0c;称为“动态加载”&#xff1b;三是由于系…

核心三:正确的停止线程

3、核心三&#xff1a;正确的停止线程 3.1 如何正确的停止线程 3.1.1 原理介绍&#xff1a;使用interrupt来通知&#xff0c;而不是强制 线程中断的机制&#xff1a;一个线程来通知要中断线程&#xff08;你好&#xff0c;你现在应该停止了&#xff09;最后的决定是由要中断…

第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

主干网络篇 | YOLOv8更换主干网络之MobileNeXt | 新一代移动端模型MobileNeXt来了!

前言:Hello大家好,我是小哥谈。MobileNeXt是由微软研究院提出的一种高效的卷积神经网络结构,它在保持模型轻量级的同时,能够获得较高的性能。MobileNeXt采用了一种称为Inverted Residuals with Linear Bottlenecks(IRL)的结构,通过深度可分离卷积和快捷连接来减少模型的…

[Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件

如下&#xff0c;我们有一个platform.pk8和platform.x509.pem。为了打包&#xff0c;需要将私钥&#xff08;.pk8&#xff09;和公钥证书&#xff08;可能是.pem或.crt文件&#xff09;合并成一个PKCS#12 格式的密钥库文件 1.准备你的私钥和证书文件 确保你有以下两个文件&…

设计模型-系统架构师(三)

1、按照《中华人民共和国著作权法》的权利保护期&#xff0c;署名权和修改权 是永久保护的。 发表权、使用权和获取报酬权 保护期限 作者终生和死后的50年。 2、&#xff08;重要&#xff09;面向对象的分析模型主要由 顶层架构图、用例与用例图和&#xff08;&#xff09;构成…

Python面试宝典:Python中与多进程编程相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十三章:并发编程:第二节:多进程编程】 第十三章:并发编程第一节:多进程编程python中的多进程python中多线程和多进程有那些区别和联系区别1. 全局解释器锁(GIL)2. 内存共享3. 创…

2024年物理化学与工程技术发展国际会议(ICPCETD 2024)

全称&#xff1a;2024年物理化学与工程技术发展国际会议&#xff08;ICPCETD 2024&#xff09; 会议网址:http://www.icpcetd.com 会议时间: 2024.06.30 截稿时间&#xff1a;2024.06.21 会议地点: 上海 投稿邮箱&#xff1a;icpcetd_info163.com 投稿标题&#xff1a;ArticleT…

前端开发框架Angular

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Angular概述 Angular是由Google开发并维护的一款开源前端开发框架。它最初被设计为用于构建单页面应用&#xff08;SPA&#xff09;&#xff0c;但随着版本的更新和发展&am…

【大数据篇】Spark:大数据处理的璀璨之星

【大数据篇】Spark&#xff1a;大数据处理的璀璨之星 文章目录 【大数据篇】Spark&#xff1a;大数据处理的璀璨之星一、什么是Spark?二、Scala的入门学习使用2.1 为什么要学习Scala?2.2 Scala基础语法 三、Spark 安装与环境配置四、Spark的核心组件五、Spark的优势六、spark…

刚接触抖店并开通了个体店,怎么快速起店呢?运营思路参考如下

我是王路飞。 如果你刚接触抖店&#xff0c;并且开通了个体店&#xff0c;但不知道如何做店的话。 其实很简单&#xff0c;抖店的流程并没有这么复杂。 电商的核心无非就是产品&#xff0c;抖店的运营也都是围绕产品展开的。 我给你们说下抖店的运营思路你们可以作为参考&a…

【Real】[Flask]SSTI

文章目录 前言一、题目解读二、解题过程三、知识点Flask是什么SSTI是什么SSTI是如何形成的易于利用的类payload是什么 探索类型和类层次结构和方法 前言 温馨提示&#xff1a;看到哪里不懂直接跳到知识点部分&#xff0c;理解完再回到解题过程。 一、题目解读 题目是[Flask]S…

如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

如何给鸿蒙 APP 签名

生成签名证书指纹 在DevEco Studio工具侧生成密钥&#xff08;.p12&#xff09;和证书请求文件&#xff08;.csr&#xff09;。请根据以下使用场景&#xff0c;在AppGallery Connect侧申请应用证书&#xff08;.cer&#xff09;、Profile&#xff08;.p7b&#xff09;文件等。…

【Linux学习】进程间通信 (3) —— System V (1)

下面是有关进程通信中 System V 的相关介绍&#xff0c;希望对你有所帮助&#xff01; 小海编程心语录-CSDN博客 目录 1. System V IPC 1. 消息队列 msg 消息队列的使用方法 1.1 消息队列的创建 1.2 向消息队列发送消息 1.3 从消息队列接收消息 1.4 使用msgctl函数显式地…

计算机笔记12(续20个)

190.指令寄存器&#xff1a;存放当前的指令 程序计数器&#xff1a;下一条要执行的指令内存地址 191.IEEE802标准中&#xff1a;802.3规定了CSMA/CD访问控制方法和物理层技术规范 802.2规定了逻辑链路控制LLC 802.1B规定了寻址、网间互连和网络管理 802.1A规定了体系结构 19…

南京移动为“2024横山徒步大会”公共安全保驾护航

近年来&#xff0c;公共安全事件因伤害性大、波及人数多而引起公众的高度重视。江苏移动南京分公司充分履行企业社会责任&#xff0c;积极发挥移动5G、低空网络技术优势&#xff0c;为“2024横山徒步大会”提供网络保障、安全巡检及应急物资运输服务&#xff0c;建立起一道公共…

科技查新是什么?一文了解!

本文主要解答 1、什么是科技查新&#xff1f; 2、科技查新有哪些作用&#xff1f; 3、科技查新一般应用于什么地方&#xff1f; 4、在哪能出具正规查新报告&#xff1f; 5、科技查新流程是怎样的&#xff1f; 带着这些问题阅读这篇文章相信一定会有收获&#xff01;干活内…

【启程Golang之旅】运算符与流程控制讲解

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

实验题目:克鲁斯卡尔(Kruskal)算法生成最小生成树(MST)原理及算法实现

一、实验目的 本实验旨在理解和掌握克鲁斯卡尔(Kruskal)算法的基本原理,并通过编程实现该算法,以求解给定无向加权图的最小生成树。通过本实验,能够加深对最小生成树概念的理解,并提升编程能力。 二、实验原理 克鲁斯卡尔算法是一种求解最小生成树的贪心算法。其基本原理…