vue写原生的上传图片并预览以及清除图片的效果,下面是demo,其中里面有vue获取input框value值的方法以及vue中函数之间的调用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片demo</title>
<link rel="stylesheet" href="../../css/font-awesome.css">
<link rel="stylesheet" href="../../layui/css/layui.css">
<!-- <link rel="stylesheet" href="../../css/layui_add.css"> -->
<link rel="stylesheet" href="../../css/layui_add.css">
<link rel="stylesheet" href="../../css/bass.css">
<style type="text/css">
.fun-set-bg{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;}
.clears:after{
clear: both;
display: block;
content: '';
height: 0;
overflow: hidden;
visibility: hidden;
}
.fl{
float: left;
}
.fr{
float: right;
}
/*开关*/
.layui-form-switch i{
top: 2px;
}
.layui-form-switch em{
top: -1px;
} #app .layui-form-switch{
margin-top: 0;
}
.fun-shar-body .main{
width: 570px;
}
.fun-shar-body .fun-active-main-tips{
color: #738299;
font-size: 14px;
line-height: 40px;
}
.fun-shar-body .fun-active-main-tips1{
line-height: 30px;
font-size: 14px;
color: #b4c1d5;
margin-left: 150px;
}
.fun-active-main-tit{
width: 140px;
text-align: right;
line-height: 40px;
height: 40px;
color: #424f65;
margin-right: 10px;
}
.fun-shar-body,.fun-shar-msg,.fun-shar-img,.fun-shar-player-tit,.fun-shar-player-msg{
margin-top: 20px;
}
.fun-shar-body .imgCon{
width: 142px;
height: 180px;
}
/* 分享图标 */
.fun-shar-body .imgCon .img{
width: 142px;
height: 142px;
background-color: #F5F5F5;
text-align: center;
line-height: 142px;
}
.fun-shar-body .imgCon .img>img{
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
.fun-shar-body .clearBtn{
padding: 0 10px;
cursor: pointer;
text-align: center;
border-radius: 3px;
line-height: 30px;
border: 1px solid #ff6b7a;
color: #ff6b7a;
margin-left: 30px;
}
.fun-shar-body .clearBtn:hover{
opacity: .8;
filter: alpha(opacity=80);
}
.fun-shar-body .imgCon .upload{
position: relative;
width: 100%;
height: 32px;
text-align: center;
line-height: 32px;
cursor: pointer;
background-color: #ff6b7a;
margin-top: 6px;
color: #fff;
border-radius: 3px;
overflow: hidden;
}
.fun-shar-body .imgCon .upload>input{
height: 32px;
position: absolute;
right: 0;
top: 0;
cursor: pointer;
opacity:0;
}
.layui-form-onswitch{
border-color: #3aa1ff;
background-color: #3aa1ff;
}
.layui-input:hover, .layui-textarea:hover{
border-color: #3aa1ff!important;
}
.layui-input-block{
margin-left: 0;
line-height: 36px;
}
.fun-active-main-icon{
line-height: 36px;
height: 36px;
margin-left: 5px;
}
.sha_btn{
line-height: 36px;
border:1px solid #3aa1ff;
color: #fff;
margin-right: 5px;
padding: 0 15px;
border-radius: 3px;
background-color: #3aa1ff;
margin-left: 10px;
cursor: pointer;
}
.sha_btn:hover,.sha_btn:active{
opacity:.8;
filter: alpha(opacity=80);
}
</style>
</head>
<body>
<div id="app">
<!-- 分享设置标题 -->
<div class="fun-set-bg">{{msgTitle}}</div>
<form class="layui-form" action=""> <!-- 分享图标 -->
<div class="fun-shar-img clears">
<p class="fun-active-main-tit fl">图片:</p>
<div class="imgCon fl">
<div class="img"><img id='imgshow' :src="imgUrl" alt="" ></div>
<div class="upload">上传图片
<input ref="extraFile"
class="file-item"
type="file"
@change="changeImg" >
</div> </div> <div class="clearBtn fl" @click='clearImgUrl'>清除图片</div>
</div>
<input type="text" v-model='formInput'>
<input type="text" ref='textCon'>
</form>
<button @click='btnClick' class="sha_btn" v-show='detailShow'>保存</button>
</div>
<script type="text/javascript" src="../../js/jquery_v3.3.1.js"></script>
<script type="text/javascript" src="../../js/bass.js"></script>
<script type="text/javascript" src="../../layui/layui.all.js"></script>
<script src="../../layui/layui.js"></script>
<script src="../../js/vue-router.js"></script>
<script src="../../js/vue.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msgTitle:'分享设置',
activeName:'{{活动名称}}',
userName:'{{name}}',
userId:'{{Id}}',
imgUrl:'../../images/banner1.jpg',
detailShow:true,
formInput:'',
playerInfo:'',
textCon:'',
shaDes:'',
extraFile:'',
},
mounted(){
// this.formData()
},
beforeMount(){
this.initForm()
},
methods:{
initForm(){
layui.use('form', function(){
var form = layui.form;
form.on('switch(fun-shar-switchs)', function(data){
if(this.checked == true){
$(this).val(1);
layer.msg('开启');
}else{
$(this).val(0);
layer.msg('关闭');
}
return false;
})
})
},
// 上传图片
changeImg(e) {
console.log(e, '1111')
var that = this
var file = e.target.files[0] || e.dataTransfer.files[0]
var fileSize = file.size || file.fileSize
var fileName = file.name
var len = e.target.classList.length
console.log(file.size, '2111')
if (file.name.lastIndexOf('.') === -1) {
this.$message.info('路径不正确')
return false
}
var AllImgExt = '.jpg|.jpeg|.gif|.bmp|.png|.swf'
var extName = file.name.substring(file.name.lastIndexOf('.')).toLowerCase()
if (AllImgExt.indexOf(extName + '|') === -1) {
this.$message.info('非法图片格式')
return false
}
if (fileSize < 3145728) {
if (window.FileReader) {
var reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = (e) => {
console.log(e.target + 'img')
console.log(e.target.result + 'img')
// that.$refs.imgzs.src = e.target.result
if (len > 1) {
that.form.wx_share_img_url = fileName
that.formData.set('share_img', file)
console.log(file, 'share_img')
// that.formData.set('share_img', e.target.result)
} else {
console.log(file, 'list_img')
// that.form.extra = fileName
// that.formData.set('list_img', file)
}
$('#imgshow').get(0).src = e.target.result;
this.imgUrl = e.target.result;
that.isUploadImg = true
}
}
} else {
this.$message.info('图片大小超过限制')
return false
}
},
clearImgUrl(){//请出图片
alert('清除图片');
$('.img img').attr('src', '##');
},
btnClick(){//点击提交按钮
let formInput = this.formInput;
let textCon = this.textCon;
let playerInfo = this.$refs.playerInfo.value;
let shaDes = this.shaDes;
                   let imgUrl = this.imgUrl;
console.log(this.formInput);
console.log(this.$refs.playerInfo.value);
console.log(this.textCon);
console.log(shaDes+';'+imgUrl);
// this.postReq(formInput, textCon, playerInfo, shaDes, imgUrl);//请求
},
postReq( formInput, textCon, playerInfo, shaDes, imgUrl){
this.$http.post('/path/aa',{parem:formInput,parem2:textCon,parem3:playerInfo,parem4:shaDes,pare5:imgUrl},{emulateJSON:true}).then( res => {
//成功执行
console.log(res)
}, error => {
console.log('出现异常')
})
},
isShowCon(){
let flag = true;
if (this.detailShow) {
this.detailShow = false;
}else{
this.detailShow = true;
}
}
}, })
</script>
</body>
</html>

  参考网址:https://www.cnblogs.com/qdlhj/p/10385168.html

vue 实现图片上传与预览,以及清除图片的更多相关文章

  1. 用Ajax图片上传、预览、修改图片

    首选图片的上传和下载并不是很难,但要注意细节. 一,给出前端图片上传的html代码 1.图片上传的控件 <img src="/${res}/images/default.png&quo ...

  2. ASP.NET MVC图片上传前预览

    回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...

  3. input file实现多选,限制文件上传类型,图片上传前预览功能

    限制上传类型 & 多选:① accept 属性只能与 <input type="file" /> 配合使用.它规定能够通过文件上传进行提交的文件类型. ② mu ...

  4. html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  5. 图片上传本地预览。兼容IE7+

    基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari 预览地址:http://www.jinbanmen.com/test/1.html js代码:/**名称 ...

  6. DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)

        1.控件功能     列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例       2.1 ASPxImage                http: ...

  7. uploadPreview 兼容多浏览器图片上传及预览插件使用

    uploadPreview兼容多浏览器图片上传及预览插件 http://www.jq22.com/jquery-info2757 Html 代码 <div class="form-gr ...

  8. js实现图片上传及预览---------------------->>兼容ie6-8 火狐以及谷歌

    <head runat="server"> <title>图片上传及预览(兼容ie6/7/8 firefox/chrome)</title> & ...

  9. file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

随机推荐

  1. python&django 实现页面中关联查询小功能(中级篇)

    目的 组合搜索实现如下图功能 知识点 1.使用自定义标签模板(templatetags) 实现 models.py 和 views.py和初级篇一样 重点如下:在app01目录下创建templatet ...

  2. android shape 圆圈 圆环 圆角

    定义圆圈:比如角标: xml布局文件 <TextView android:id="@+id/item_order_pay_count" android:layout_widt ...

  3. 【转】一文掌握 Linux 性能分析之网络篇(续)

    [转]一文掌握 Linux 性能分析之网络篇(续) 在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息 ...

  4. AI应用开发实战(转)

      AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到https://git ...

  5. 小程序 movable-view 在页面中的可移动图标

    项目中需要一个可拖动的小图标, 1.小程序组件movable-view 文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/ ...

  6. 解决:win7右键打开方式添加应用程序无法设置和删除多余的打开方式

    win7右键打开方式添加应用程序无法设置 点击“开始”—“运行”,输入“regedit”打开注册表,在“HKEY_CLASSES_ROOT\Applications\”中找到无法添加的程序 ( 比如“ ...

  7. js实现多个小球碰撞

    实现思路:小球的移动,是通过改变小球的left和top值来改变,坐标分别为(x,y)当x/y值加到最大,即加到父级的宽度或者高度时,使x值或者y值减小,同理当x值或者y值减到最小时,同样的使x值或者y ...

  8. java 常用工具类

    1. org.apache.commons.collections4包提供CollectionUtils.MapUtils.ListUtils.SetUtils等工具类: 2. org.apache. ...

  9. 简单使用zabbix监控nginx是否存活

    1.在agent端修改主配置文件 vim /etc/zabbix/zabbix_agentd.conf ........ ........ UserParameter=nginx.status[*], ...

  10. Windows 2008 R2防火墙,允许被ping的设置方法

    这篇文章主要介绍了Windows 2008 R2防火墙,允许被ping的设置方法,需要的朋友可以参考下   1.准备 1)原因 出于安全因素考虑,在Windows 2008 R2上是不允许从外部对其P ...