仿照el-upload 封装自己的上传控件(el-upload 移动端无法吊起相机)

2024-05-13 16:44

本文主要是介绍仿照el-upload 封装自己的上传控件(el-upload 移动端无法吊起相机),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

input选择图片的那个选择在h5的时候在去年下半年突然无法无法出现唤醒相机的选项  不知道出现的原因 

发现el-upload作为h5的时候无法吊起相机 

又因为需要对服务端地址图片进行回显(处于编辑功能的情况下 非新增 新增el-upload 可以实现回显)  两个功能el-upload都不能很好的支持 所以自己仿照el-upload 做了上传组件的封装

具体代码如下图所示

<template><div style="display: flex; height: 100%;"><div v-for="(item,idx) in httpLits" :key="item" class="listitem"><div class="inner"><img :src="`${item}`"><div class="delete" @click="delimg(idx)"><i class="el-icon-delete"></i></div></div></div><div class="inputbox" v-if="httpLits.length !== 5" :class="httpLits.length > 0 ? 'listitem' : ''"><i class="ri-camera-fill"></i><span>{{ httpLits.length === 0 ? '添加图片' : `还可添加${5 - httpLits.length}张`}}</span><input v-if="inputshow" type="file" name="image" :accept="'image/*'" @change="onchangeImgFun"style="position: absolute; width: 100%;height: 100%;opacity: 0;" /></div></div>
</template><script>
import axios from 'axios'
import _ from "lodash"
export default {props: ['value'],data() {return {inputshow: true,httpLits: [],}},created() {this.httpLits=_.cloneDeep(Array.isArray(this.value) ?this.value:[])},methods: {onchangeImgFun(e) {console.log(e.target.files)var file = e.target.files[0];this.inputshow = falselet formData = new FormData()formData.append('image', file)axios({method: 'post',url: `xxxx`,data: formData},).then(res => {this.httpLits.push(res.data.data.image)this.$emit('input', this.httpLits)this.inputshow = true}).catch(() => {alert('上传失败')})},// 删除图片delimg(idx) {this.httpLits.splice(idx, 1)this.$emit('input', this.httpLits)},}}
</script><style lang="scss" scoped>
.inputbox {height: 4.125rem;line-height: unset;background-color: #F2F6F8;width: calc(100vw - 1.75rem);border-radius: 6px;border-color: #f2f6f8;display: flex;flex-direction: column;align-items: center;justify-content: center;position: relative;box-sizing: border-box;i {font-size: 24px;color: #4E5969;}span {font-weight: 400;font-size: 12px;color: #86909C;}
}.listitem {width: calc(100% / 5);height: 100%;padding: 1px 4px;box-sizing: border-box;.inner {border-radius: 4px;width: 100%;height: 100%;overflow: hidden;position: relative;img {width: 100%;height: 100%;}.delete {position: absolute;right: 0;bottom: 0;width: 20px;height: 20px;z-index: 9999;background-color: #ffffff44;border-radius: 12%;display: flex;align-items: center;justify-content: center;i {color: #f53f3f;font-size: 12px;}}}span {font-weight: 400;font-size: 10px;color: #86909C;}}
</style>

效果图如下:

这篇关于仿照el-upload 封装自己的上传控件(el-upload 移动端无法吊起相机)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

如何解决yum无法安装epel-release的问题

《如何解决yum无法安装epel-release的问题》:本文主要介绍如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录yum无法安装epel-release尝试了第一种方法第二种方法(我就是用这种方法解决的)总结yum

GitLab文件的上传与下载方式

《GitLab文件的上传与下载方式》:本文主要介绍GitLab文件的上传与下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录GitLab 项目拉取到本地GitLab 项目上传方法方法 1:本地项目未初始化Git方法 2:本地项目已初始化GitGitLab 上

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1