vue+html5实现上传图片
原理:dispatchEvent 自定义触发事件,常用于自定义鼠标事件或点击事件 ,原生控件input打开上传文件
方案:vue项目,点击自己的上传文件图标,通过dispatchEvent主动触发一个自定义上传文件事件 .
- 原生控件 input
accept 属性:
accept = "audio/* " :接受所有的声音文件
accept = "video/* " :接受所有的视频文件accept = "image/* " :接受所有的图像文件。
如需规定多个值,请使用逗号分隔(比如 <input accept="audio/*,video/*,image/*" />)。
<input
type="file"
accept="image/*" // 可以打开相机或文件,"jpg,png,gif"这种打开只能上传特定文件且没有相机
@change="changeImage()"
ref="avatarInput"
style="display:none"
>
- 隐藏原生上传控件,使用自己上传的图标实现上传功能
<template>
<section>
<!-- 自定义上传按钮 -->
<div class="list-items">
<span>活动主K</span>
<div class="images" @click="uploadImg(1)">
<img :src="require('./images/upload@2x.png')" alt="" />
</div>
</div>
<!-- 原生控件 -->
<input class="uploadfile" type="file" @change="fileImage" ref="filElem" style="display: none" accept="image/*" />
</section>
</template>
<script>
export default {
methods: {
// 上传图片
uploadImg() {
if (this.$store.state.isInApp) {
console.log('isInApp');
} else {
// 触发一个自定义事件
this.$refs.filElem.dispatchEvent(new MouseEvent("click"));
}
},
fileImage(e) {
let that = this;
let file = e.target.files[0];
this.file = file;
// 校验图片格式
var rFilter = /^(image\/jpeg|image\/jpg|image\/png|image\/gif)$/i; // 检查图片格式
if (!rFilter.test(file.type)) {
$utilMsg.warn("不支持的格式,请重新上传!");
return false;
}
// 判断图片是否大于10M
if (file.size >= 10 * 1000 * 1024) {
return $utilMsg.warn("上传图片过大,请重新选择");
}
this.upImgUrl()
},
upImgUrl() {
let params = new FormData();
params.append("file[]", this.file);
let that = this
return window.$.ajax({
type: "POST",
url: xxxxx,
data: params,
contentType: false,
processData: false,
mimeType: "multipart/form-data",
success: function (data) {
data = JSON.parse(data);
if (+data.code === 0) {
let imgarr = data.data
that.picThumb = imgarr[0].showPath;
console.log('外部图片', imgarr);
} else {
console.log('上传失败');
return
}
},
});
},
}
}
</script>
vue+html5实现上传图片的更多相关文章
- vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制
vue 文件: 自行引用 elemen-ui <el-upload action=" 让后端给你上传地址 " ...
- html5中上传图片
从相册中选择图片上传 function uploadFromAlbum(type) { var dirtype = ""; if ("pick_store_license ...
- Html5 拖放上传图片
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...
- Vue HTML5 History 模式
vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不想要很丑的 hash,我们可以用路由的 his ...
- vue+element 递归上传图片
直接上代码. <template> <div> <el-upload action="http://localhost:3000/pic ...
- vue element-ui 组件上传图片 之后 对上传按钮 进行隐藏,删除之后重新显示
注:如果在当前的 vue 文件里 写了 style 样式,得 去除 scoped [私有属性必须去除,不能保留](这个是重点,不去除不生效), template 部分 <el-upload ...
- vue 引入vant 上传图片oss处理
<van-uploader :before-read="beforeRead" v-model="product.images" max-size=&qu ...
- html5异步上传图片显示上传文件进度条
<html> <head> </head> <body> <p> emo_album_id:<input type="tex ...
- jquery html5 file 上传图片显示图片
jquery js 的代码:不同浏览器下的路径 //建立一個可存取到該file的url function getObjectURL(file) { var url = null ; i ...
- vue|html5 form 验证
html:<form id="scoreForm" @submit="fsub" > <template v-for="(item, ...
随机推荐
- 修改数据时,一直提示"具有 XXX 的 字典管理 已存在(即数据已存在)
原代码: class DictConfig(models.Model): """ 字典表 """ id = models.AutoField ...
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息. 这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web ...
- [0x12] 132.小组队列
题意 link(more:UVA540) 简化题意:对 \(n\) 个小组排队,每个小组有至多 \(m\) 个成员(每个成员有唯一编号 \(x\)),当一个人来到队伍时,如果队中有同组成员,直接插入其 ...
- [R语言] ggplot2入门笔记3—通用教程如何自定义ggplot2
通用教程简介(Introduction To ggplot2) 代码下载地址 以前,我们看到了使用ggplot2软件包制作图表的简短教程.它很快涉及制作ggplot的各个方面.现在,这是一个完整而完整 ...
- 如何在mac电脑上配置命令行工具
Hi,欢迎大家在有空的时候做客[江涛学编程],这里是2023年的第7篇原创文章,今天我们来聊一聊如何在mac电脑上配置命令行工具 老规矩,拍拍手,上菜. 同学,打开你的mac电脑,按住键盘上的&quo ...
- Hugging Face 开源库介绍
Hugging Face 的开源生态今年成长迅速,timm 成为新加入的成员.diffusers.evaluate 以及 skops 等各种库蓬勃发展. Transformers Transforme ...
- 手把手教你写Dockerfile以及测试
Dockerfile是什么? dockerfile就是用来构建docker镜像的构建文件,命令参数脚本. 如何使用Dockerfile? 1.编写一个Dockerfile文件 2.docker bui ...
- js节流防抖 减少服务器请求
- 【分析笔记】Linux gpio_wdt.c 看门狗设备驱动源码分析
基本原理 该看门狗的设备驱动实现原理很简单,比较主要的有两点: 一.定时器喂狗 通过定时器根据配置文件配置的喂狗方式(如脉冲切换.电平切换),对指定的 gpio 进行脉冲切换或电平切换实现喂狗. 脉冲 ...
- 2023计算机领域顶会(A类)以及ACL 2023自然语言处理(NLP)研究子方向领域汇总
2023年的计算语言学协会年会(ACL 2023)共包含26个领域,代表着当前前计算语言学和自然语言处理研究的不同方面.每个领域都有一组相关联的关键字来描述其潜在的子领域, 这些子领域并非排他性的,它 ...