vue 图片上传功能
这次做了vue页面的图片上传功能,不带裁剪功能的!
首先是html代码,在input框上添加change事件,如下:
- <ul class="clearfix">
- <li v-if="imgs.length>0" v-for='(item ,index ) in imgs'>
- <img :src="item">
- </li>
- <li style="position:relative" v-if="imgs.length>=6 ? false : true">
- <img src="../../assets/img/addimg.png"><input class="upload" @change='add_img' type="file">
- </li>
- </ul>
我这里做了图片数量的限制,最多6张。
然后是data数据,如下:
- data () {
- return {
- imgs: [],
- imgData: {
- accept: 'image/gif, image/jpeg, image/png, image/jpg',
- }
- }
- }
imgs数组是放图片路径的,页面显示图片就是循环这个数组,imgData是判断图片类型的。
接下来是最重要的methods里面的方法,具体如下:
- <code class="language-html">add_img(event){
- let reader =new FileReader();
- let img1=event.target.files[0];
- let type=img1.type;//文件的类型,判断是否是图片
- let size=img1.size;//文件的大小,判断图片的大小
- if(this.imgData.accept.indexOf(type) == -1){
- alert('请选择我们支持的图片格式!');
- return false;
- }
- if(size>3145728){
- alert('请选择3M以内的图片!');
- return false;
- }
- var uri = ''
- let form = new FormData();
- form.append('file',img1,img1.name);
- this.$http.post('/file/upload',form,{
- headers:{'Content-Type':'multipart/form-data'}
- }).then(response => {
- console.log(response.data)
- uri = response.data.url
- reader.readAsDataURL(img1);
- var that=this;
- reader.onloadend=function(){
- that.imgs.push(uri);
- }
- }).catch(error => {
- alert('上传图片出错!');
- })
- },</code>
首先是获取你选择的图片,判断图片的类型和大小,然后以form表单的形式提交到后台,后台会返回给你这个图片的线上路径,你把后台返回的图片路径push到图片数组里面就可以了。
一般情况下还有删除图片的方法,就是把图片数组里的那个路径删除掉,把数据提交到后台,告诉后台删除了哪张图片就可以了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
body {
margin: 0;
}
html,
body {
height: 100%;
}
#box {
width: 100%;
height: auto;
}
.img-d {
margin-top: 30px;
width: 300px;
height: 300px;
text-align: center;
position: relative;
}
.img-d span {
display: inline-block;
width: 100%;
height: 100%;
background-image: url("imagess/kmhvbjvb.jpg");
cursor: pointer;
background-size: 100% 100%;
background-repeat: no-repeat;
}
#up {
/* display: none; */
}
.rems {
display: inline-block;
width: 25px;
height: 25px;
background: red;
border-radius: 50% 50%;
font-size: 17px;
position: absolute;
top: -6px;
right: -6px;
color: white;
text-align: center;
line-height: 25px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="box">
<div class="img-d">
<span class="up-s"></span>
<input type="file" id="up" multiple name="files">
</div>
</div>
<script>
// span的点击事件
var addBtn = document.querySelector('.up-s');
addBtn.addEventListener('click', function () {
document.querySelector('#up').value = null;
document.querySelector('#up').click();
return false;
}, false);
// 处理input点击之后的change事件
document.getElementById("up").addEventListener("change", function (e) {
var files = this.files;
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function (e) {
var dx = (e.total / 1024) / 1024;
if (dx >= 2) {
alert("文件大小大于2M");
return;
}
var result = this.result;//这里就是转化之后的DataURL
addBtn.style.backgroundImage = "url(" + result + ")";
}
var rem = document.createElement("i");
rem.setAttribute("class", "rems");
rem.innerHTML = "x";
document.querySelector(".img-d").appendChild(rem);
rem.addEventListener('click', function () {
this.style.display = "none";
addBtn.style.backgroundImage = "url(imagess/kmhvbjvb.jpg)";
});
})
</script>
</body>
</html>
vue 图片上传功能的更多相关文章
- H5 利用vue实现图片上传功能。
H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...
- vue图片上传组件
前言:很多项目中都需要用到图片上传功能,而其多处使用的要求,为了避免重复造轮子,让我决定花费一些时间去深入了解,最终封装了一个vue的图片上传组件.现将总结再次,希望有帮助. Layout <d ...
- vue 图片上传
功能说明: 1.调用手机拍照功能 2.调用相册功能 3.图片上传功能 4.图片预览功能 5.图片删除功能 关键点: .input 新增multiple .accept="image/*处理I ...
- thinkphp达到UploadFile.class.php图片上传功能
片上传在站点里是非经常常使用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php).方便于我们去实现图片上传功能,以 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...
- PHP语言学习之php做图片上传功能
本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...
- [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站
前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...
- 给DEDECMS广告管理中增加图片上传功能
dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...
- 前端丨如何使用 tcb-js-sdk 实现图片上传功能
前言 tcb-js-sdk 让开发者可以在网页端使用 JavaScript 代码服务访问云开发的服务,以轻松构建自己的公众号页面或者独立的网站等 Web 服务.本文将以实现图片上传功能为例,介绍 tc ...
随机推荐
- C# 16进制与字符串、字节数组之间的转换(串口通讯中)
1.c#中如何将十进制数的字符串转化成十六进制数的字符串//十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString( ...
- pom.xml文件配置maven仓库地址
中央仓库就是Maven的一个默认的远程仓库,Maven的安装文件中自带了中央仓库的配置($M2_HOME/lib/maven-model-builder.jar) 在很多情况下,默认的中央仓库无法满足 ...
- 使用github作为远程仓库的常见git操作
[git上传本地代码到github新建仓库]一.建立git本地仓库 1.在本地目标文件夹(Code)中执行命令: git init //初始化本地仓库二.将上传到github的项目文件添加到本地仓库中 ...
- win7 删除多余启动项的方法
win7已经没有像xp那么简单的boot.ini让我们修改了,取而代之的是bcdedit.现在就简单的说下bcdedit的常规应用吧.开始,运行,输入bcdedit /?可以看到帮助.简单的应用开始. ...
- windows10 vs2019 + opencv 3.4.7环境搭建
windows vs2019 + opencv 3.4.7环境搭建 安装Opencv 3.4.7 下载 Opencv 第1步 进入 opencv releases 页面,点击 "Window ...
- No packages marked for update
问题:用yum安装docker,更新yum存储时,报以下错误,导致yum坏了 [root@localhost yum.repos.d]# vi docker.repo [root@localhost ...
- 二分图——多重匹配模板hdu1669
好像多重匹配一般是用网络流来做的.. 这是匈牙利算法的模板:lim是每个组的上界 思路是每个组都可以匹配lim个点,那么当点x遇到的组匹配的点数还没有超过lim时,直接匹配即可 如果已经等于了lim, ...
- css---switch开关
html: <label><input class="mui-switch" type="checkbox"> 默认未选中</la ...
- lavarel中如何使用memcache
lavarel中如何使用memcache 一.总结 一句话总结: composer下载包,配置,使用函数 1.memcache是什么? 键值对内存缓存 MemCache是一个自由.源码开放.高性能.分 ...
- Python学习day08-python进阶(2)-内置方法
Python学习day08-python进阶(2)-内置方法 列表数据类型内置方法 作用 描述多个值,比如爱好 定义方法 xxxxxxxxxx 2 1 hobby_list ...