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

2024-05-27 13:52

本文主要是介绍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'))

这篇关于vue小记——上传图片小组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007667

相关文章

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE