zoukankan      html  css  js  c++  java
  • 前端 上传预览功能实现

     <div  style="position: relative;">
         <input id="files" type="file" onchange="previewImage(this, 'prvid')" multiple="multiple" style="cursor: pointer;z-index: 9999;position: absolute;opacity: 0;padding: 80px 0px;">  
          <div id="prvid" style="border: 1px solid #bfbfbf; height: 160px;  270px; border-radius: 10px;">
                <img src="../resources/imgs/selectImg.png" style="position: absolute;top: 50px;left: 130px;" /> 
                <p class="showFileName" style="margin-top: 95px;color: #bfbfbf; text-align: center;">选择文件</p>
          </div>
     </div>
    function previewImage(file, prvid) { 
    	/* file:file控件 
    	* prvid: 图片预览容器 
    	*/ 
    	var prvbox = document.getElementById(prvid);
    	var tip = "请上传jpg/png/gif格式的图片文件!"; // 设定提示信息 
    	var filters = { 
    	"jpeg" : "/9j/4", 
    	"gif" : "R0lGOD", 
    	"png" : "iVBORw" 
    	} 
    	var html1 = '<img src="../resources/imgs/selectImg.png" style="position: absolute;top: 50px;left: 130px;" />'+ 
            		'<p class="showFileName" style="margin-top: 95px;color: #bfbfbf; text-align: center;">选择文件</p>';
    	if (window.FileReader) { // html5方案
    		var fileSize = file.files[0].size
    		if(fileSize>500000){
    			alert("请上传小于500K的文件!")
    			return;
    		}
    		for (var i=0, f; f = file.files[i]; i++) { 
    			var fr = new FileReader(); 
    			fr.onload = function(e) { 
    			var src = e.target.result; 
    			if (!validateImg(src)) { 
    				alert(tip) 
    				} else { 
    				showPrvImg(src); 
    			} 
    		} 
    		fr.readAsDataURL(f); 
    		} 
    		} else { // 降级处理
    
    		if ( !/.jpg$|.png$|.gif$/i.test(file.value) ) { 
    			alert(tip); 
    		} else { 
    			var fileObj = file.files[0].size;
    			console.log(fileObj);
    			showPrvImg(file.value); 
    		} 
    	} 
    
    	function validateImg(data) { 
    		var pos = data.indexOf(",") + 1; 
    		for (var e in filters) { 
    			if (data.indexOf(filters[e]) === pos) { 
    				return e; 
    			} 
    		} 
    		return null; 
    	} 
    
    	function showPrvImg(src) { 
    		var img = document.createElement("img"); 
    		img.src = src; 
    		img.style.width = "270px"; 
    		img.style.height = "160px"; 
    		img.style.borderRadius = "10px"; 
    		//img.style.filter = 'alpha(opacity:'+50+')'; //设置IE的透明度 
    		//img.style.opacity = 50 / 100; //设置fierfox等透明度,注意透明度值是小数 
    		prvbox.innerHTML = ""; 
    		prvbox.appendChild(img); 
    		var file = $("#files").val();
    		var arr=file.split('\');
    		console.log(arr)
            var fileName=arr[arr.length-1];
    		console.log(fileName)
    		//document.getElementsByClassName('showFileName').innerHTML=fileName; 
            //$(".showFileName").val(fileName);
            //$(".showFileName").html(fileName);
    		} 
    	}
    

      直接粘代码吧;

      然后

           上传预览的原理就是:

        通过input的type=file属性和window的内置FileReader对象,利用FileReader对象的readAsDataURL方法把图片数据转成base64字符串数据,然后把这个base64字符串数据赋值给一个图片标签的src属性..

      然后 

      就实现预览效果啦

          

  • 相关阅读:
    JS原生隐士标签扩展
    Asp.Net MVC强类型页面获取值几种方式
    Asp.Net MVC控制器获取视图传值几种方式
    vs2015 创建MVC项目
    C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上
    EF简介及CRUD简单DEMO
    Impala学习--代码生成(Code Generation)
    Impala源代码分析(2)-SQL解析与执行计划生成
    Impala源代码分析(3)-backend查询执行过程
    Impala源代码分析(1)-Impala架构和RPC
  • 原文地址:https://www.cnblogs.com/moli-/p/9295802.html
Copyright © 2011-2022 走看看