• input实现多文件上传及图片预览


    通过使用html的input标签可以实现文件上传比如

    <input id="file" type="file" name="upload" multiple onchange="showch();">
    

    其中将type属性设为file。

    添加multiple实现多文件上传入下图所示:

    通过使用原生js或jQuery就可以获得文件名,文件路径,文件大小等属性

    获得文件属性的js代码如下:

    <script type="text/javascript">
    	function showch(){
    		var files=document.getElementById('file').files,//其中document.getElementById("file").files 	会获取一个数组,数组中的元素拥有的属性有lastModifiedDate,name,size,type,webkitRelativePath。
    			show=document.getElementById('show');
    		for (var i = 0; i < files.length; i++) {
    			show.innerHTML+=files[i].name+"<br>";
    
    			}
    		}
    
    	}
    </script>
    

      现在实现图片预览;

    出于安全考虑浏览器一般不能直接获得文件的绝对路径;

    因此就要用到FileReader用于从文件中读取数据和保存到JS变量中。此API特意设计成跟XMLHttpRequest 一样因为都是从外部读取数据。读取过程都是异步的不会造成浏览器阻塞。

    主要有如下几种读取文件的方式:

    • readAsText() – 返回文件内容的纯文本格式
    • readAsBinaryString() –返回文件内容的二进制格式 (不推荐– 推荐使用 readAsArrayBuffer())
    • readAsArrayBuffer() – 返回文件内容的 ArrayBuffer 格式(图片文件推荐使用)
    • readAsDataURL() – 返回文件内容的 data URL格式

    现在需要预览图片,所以使用readAsDataURL()返回文件内容的data URL格式

    由于data URL包含图片的所有内容,所以可以直接赋给img 的src属性

    代码如下:

    1 var reader=new FileReader();
    2             reader.readAsDataURL(files[i]);
    3             reader.onload=function(e){
    4                 var img=new Image(); 
    5                 img.src=this.result;
    6                 show.appendChild(img);

    最终效果:

    至此所有功能都实现

    最终代码如下:

     1 <input id="file" type="file" name="upload" multiple onchange="showch();"><!--这个选中多个的方式让人觉得有点不爽啊=-= 不是很好用的样子捏-->
     2 <div id="show"></div>
     3 </form>
     4 <script type="text/javascript">
     5     function showch(){
     6         var files=document.getElementById('file').files,//其中document.getElementById("file").files     会获取一个数组,数组中的元素拥有的属性有lastModifiedDate,name,size,type,webkitRelativePath。
     7             show=document.getElementById('show');
     8         for (var i = 0; i < files.length; i++) {
     9             show.innerHTML+=files[i].name+"<br>";
    10             var reader=new FileReader();
    11             reader.readAsDataURL(files[i]);
    12             reader.onload=function(e){
    13                 var img=new Image(); 
    14                 img.src=this.result;
    15                 show.appendChild(img);
    16                 console.log(this.result);
    17             }
    18         }
    19 
    20     }
    21 </script>
  • 相关阅读:
    UCenter创始人、Discuz!创始人、Discuz!管理员账号区别
    Linux命令:ps ef |grep java
    ASP.NET结合数据库,发送邮件找回密码
    NET中Eval()方法大全
    必将改变Web的五大技术
    为DataGridTextColumn设置表头样式和单元格样式
    string to float
    .net之生成图表的控件(柱状图,曲线图,饼状图) [转]
    判断一个string是否可以为数字
    从零开始做一个开源项目 学习笔记
  • 原文地址:https://www.cnblogs.com/Bideam/p/5597326.html
Copyright © 2020-2023  润新知