Vue3——自定义封装上传图片样式
创始人
2025-05-29 06:55:26

自定义封装上传图片样式

一、首先需要新建一个自组建完善基础的结构,我这里起名为ImgUpload.vue



name 上传的文件字段名
show-file-list 是否显示已上传文件列表
accept 接受上传的文件类型(thumbnail-mode 模式下此参数无效)
multiple 是否支持多选文件
http-request 覆盖默认的 Xhr 行为,允许自行实现上传文件的请求

二、接下来自定义背景以及图标

  

判断如果存在路径则显示图片,否则显示默认背景
样式如下:

.cover-upload-btn {width: 150px;height: 150px;position: relative;border: 1px solid #DCDFE6;border-radius: 5%;padding: 5px;box-sizing: border-box;img{width: 100%;}i {position: absolute;top: 50%;left: 50%;font-size: 46px;transform: translate(-50%, -50%);color: #aaa;}
}

三、上传方法

const uploadImgage = async(file) => {console.log(file);// 请求接口中需要带url以及let result = await proxy.Request({url:api.uploadUrl,  // 上传路径dataType:'file', // 指定传输类型params:{file:file.file,   // 提交上传路径到指定位置type:0,          }})const fileName = result.data.fileNameemit('update:modelValue',fileName) 
};

dataType可以参考这段封装请求的requset

请添加图片描述

前面配置的代码部分如下:

import { getCurrentInstance } from "vue";const {proxy} = getCurrentInstance()
// 通过props将路径传给父组件
const props = defineProps({modelValue:{type:String,default:null}
})
const api = {uploadUrl:'/img' //图片上传接口
}

然后注意一下这个位置

  

这里的globaInfo.imageUrl是在全局中进行调用,所以上方使用proxy来获取路径位置
main.js配置如下

import App from './App.vue'
const app = createApp(App);
app.config.globalProperties.globaInfo = {  // 添加可以在应用程序内的任何组件实例中访问的全局 property。属性名冲突时,组件的 property 将具有优先权。imageUrl:'/api/file/'  //放入图片的文件夹位置
};
import ImgUpload from '@/components/ImgUpload.vue'; //引入子组件
app.component('ImgUpload',ImgUpload) // 全局调用组件

最后在父组件中引入自组件即可



相关内容

热门资讯

原创 树... 去印度打卡?别只顾着追孟买的繁华、新德里的庄严——有座老城藏着“意外惊喜”:飘着豆浆香气的中式早餐摊...
恩施夜晚去哪玩?资深本地导游带... 恩施夜晚去哪玩?资深本地导游带你解锁女儿城之外的绝美夜游地,附独家行程建议! 很多游客朋友都以为,恩...
雪后的河南,有多美? 大雪落中原河南瞬间切换成“冰雪奇境”模式青山褪尽苍翠,化作水墨雪山云雾在积雪的峰峦间流转古建披上银装...
原创 比... 你家里,一定有这样东西。 它不贵,很常见。但老一辈人,叫它“水中人参”。 它就是芡实。 一颗颗,圆溜...