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, ...
随机推荐
- LeetCode HOT 100:在排序数组中查找元素的第一个和最后一个位置
题目:34. 在排序数组中查找元素的第一个和最后一个位置 题目描述: 给你一个递增数组,和一个目标值target,最终返回数组中第一次出现target和最后一次出现target的下标.如果该数组中没有 ...
- [Linux Kernel 源码分析] 通过vconfig配置vlan的系统调用/驱动流程分析
By YuCloud (蓝天上的云℡ - 博客园 https://www.cnblogs.com/yucloud/) 转载请注明出处 vconfig源码分析 vlan/vconfig.c at mas ...
- 聊一聊 SQLSERVER 的行不能跨页
一:背景 1. 讲故事 相信有很多朋友在学习 SQLSERVER 的时候都听说过这句话,但大多都是记忆为主,最近在研究 SQLSERVER,所以我们从 底层存储 的角度来深入理解下. 二:理解数据页 ...
- Android 使用实现简单的音乐播放以及管理
这里主要通过 MediaPlayer以及 AudioManager 来实现的对应的功能. 1.第一种,播放本地媒体文件: 你需要自己准备一个MP3格式的音频文件: 然后在资源目录(res)里面新建一个 ...
- SpringBoot+Mybatis-plus整合easyExcel批量导入Excel到数据库+导出Excel
一.前言 今天小编带大家一起整合一下easyExcel,之所以用这个,是因为easyExcel性能比较好,不会报OOM! 市面上常见的导入导出Excel分为三种: hutool easyExcel p ...
- (11)go-micro微服务雪花算法
目录 一 雪花算法介绍 二 雪花算法优缺点 三 雪花算法实现 四 最后 一 雪花算法介绍 雪花算法是推特开源的分布式ID生成算法,用于在不同的机器上生成唯一的ID的算法. 该算法生成一个64bit的数 ...
- vue打包---放到服务器下(一个服务器多个项目需要配置路径),以及哈希模式和历史模式的不同配置方法
哈希模式,好用,不需要服务器配合分配路径指向,自己单机就可以打开了 接下来上代码截图 接下来开始截图 历史模式 历史模式需要后端支持 打包后自己直接点击是打不开的 截图如下
- 使用prometheus来避免Kubernetes CPU Limits造成的事故
使用prometheus来避免Kubernetes CPU Limits造成的事故 译自:Using Prometheus to Avoid Disasters with Kubernetes CPU ...
- 【题解】[LNOI2022] 盒
题目分析: 我们可以对每一条边单独计算贡献,这样会发现贡献很好算: \[ans = \sum_{i=0}^{n-1} w_i \sum_{j=0}^S |j - s_i| \binom{i+j-1}{ ...
- nginx 隐藏 index.php 直接访问
项目配置文件vhosts加上: if ( !-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } 修改后如图