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 ...
随机推荐
- POJ 2954 /// 皮克定理+叉积求三角形面积
题目大意: 给定三角形的三点坐标 判断在其内部包含多少个整点 题解及讲解 皮克定理 多边形面积s = 其内部整点in + 其边上整点li / 2 - 1 那么求内部整点就是 in = s + 1 - ...
- 2019-10-4-C#-极限压缩-dotnet-core-控制台发布文件
title author date CreateTime categories C# 极限压缩 dotnet core 控制台发布文件 lindexi 2019-10-04 14:59:36 +080 ...
- spring:bean的细节之三种创建Bean对象的方式
<!--创建Bean的三种方式--><!--第一种方式,使用默认构造函数创建 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有属性和标签时. 采用的就 ...
- HNOI2018思记
4-13 顺顺利利到了湖南.晚上认真研读cf毒瘤题题解,未果. 发现这里含铁丰富的高温多雨式红土地.以及窗户特别深,总有一圈小阳台的房子,门楣深邃如瞳. 看了一波miaom的ZJOI游记,思考了一下解 ...
- LinkedHashMap笔记
一.最基本元素存储单元 /** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K ...
- 「题解」:windy数
问题: windy数 时间限制: 1 Sec 内存限制: 512 MB 题面 题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 的正整数被称为 Windy 数. ...
- 「题解」:[BZOJ4558]方
问题: 方 时间限制: 2 Sec 内存限制: 256 MB 题面 题目描述 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一 ...
- C++ #define,typedef,using用法区别
一.#define #define 是宏定义命令,宏定义就是将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替,是预编译命令,因此会在预编译阶段被执行 1.无参宏定义 无参宏的宏名 ...
- PAT甲级——A1077 Kuchiguse
The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...
- 操作系统-CPU调度
概念 控制.协调多个进程对CPU的竞争 即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程 场景 N个进程就绪,等待上M(M>=1)个CPU运行,需要决策哪个进程分配给 ...