• vue 实现图片上传与预览,以及清除图片


    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{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{
    			 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{
    			 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{
    			 142px;
    			height: 180px;
    		}
    		/* 分享图标 */
    		.fun-shar-body .imgCon .img{
    			 142px;
    			height: 142px;
    			background-color: #F5F5F5;
    			text-align: center;
    			line-height: 142px;
    		}
    		.fun-shar-body .imgCon .img>img{
    			max- 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;
    			 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

  • 相关阅读:
    Oracle 集合类型
    JAVA_SE_笔记整理(反射机制)
    JAVA_SE_笔记整理(GUI)
    JAVA_SE_笔记整理(网络编程)
    JAVA_SE_笔记整理(多线程)
    JAVA_SE_笔记整理(流)
    JAVA_SE_笔记整理(集合三)
    JAVA_SE_笔记整理(集合二)
    JAVA_SE_笔记整理(集合一)
    JAVA_SE_笔记整理(面向对象四(接口,包,内部类))
  • 原文地址:https://www.cnblogs.com/lvxisha/p/10772917.html
Copyright © 2020-2023  润新知