视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5编程实战之三-图片文本(txt)拖拽预览实现代码
2020-11-27 15:10:07 责编:小采
文档


本文主要用到的知识

  http://www.gxlcms.com/wiki/1118.html" target="_blank">HTML5中的File及FileReader接口

源码

<!DOCTYPE html><html><head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>HTML5文件拖拽预览Demo</title>
 <style type="text/css">
 h1{
 padding:0px;
 margin:0px;
 }
 p#show{
 border: 1px solid #ccc; 
 width: 400px; 
 height: 300px;
 display: -moz-box;
 display: -webkit-box;
 -moz-box-align: center;
 -webkit-box-align: center;
 -moz-box-pack: center;
 -webkit-box-pack: center;
 resize:both;
 overflow:auto;
 }
 p[id^=show]:hover{
 border: 1px solid #333; 
 }
 p#main{
 width:100%;
 }
 p#successLabel {
 color:Red;
 }
 p#content {
 display:none;
 }
 </style>
 <script type="text/javascript">
 function init() 
 { var dest = document.getElementById("show");
 dest.addEventListener("dragover", function(ev) 
 {
 ev.stopPropagation();
 ev.preventDefault();
 }, false);
 
 dest.addEventListener("dragend", function(ev) 
 {
 ev.stopPropagation();
 ev.preventDefault();
 }, false);
 
 dest.addEventListener("drop", function (ev) {
 ev.stopPropagation();
 ev.preventDefault(); 
 var file = ev.dataTransfer.files[0]; 
 var reader = new FileReader(); 
 if (file.type.substr(0, 5) == "image") {
 reader.onload = function (event) {
 dest.style.background = 'url(' + event.target.result + ') no-repeat center';
 dest.innerHTML = "";
 };
 reader.readAsDataURL(file);
 } else if (file.type.substr(0, 4) == "text") {
 
 reader.readAsText(file);
 reader.onload = function (f) {
 dest.innerHTML = "<pre>" + this.result + "</pre>";
 dest.style.background = "white";
 }
 } else {
 dest.innerHTML = "暂不支持此类文件的预览";
 dest.style.background = "white";
 }
 }, false);
 } 
 //设置页面属性,不执行默认处理(拒绝被拖放) 
 document.ondragover = function(e){e.preventDefault();};
 document.ondrop = function(e){e.preventDefault();}
 
 window.onload=init; 
 </script></head><body>
 <h1>HTML5文件拖拽预览Demo</h1>
 <p id="show">
 文件预览区,仅限图片和txt文件 
 </p></body></html>

主要代码解析

  样式部分就不说了,很简单

  dragover、dragend、drop是三个与拖拽相关的事件。

  dragover表示被拖放的元素正在本元素范围内移动

  dragend表示拖放操作结束

  drop表示有其他元素被拖放到了本元素中

  代码中先分别监听这几个事件,取消浏览器默认的行为,然后利用HTML5中的File及FileReader判断读取拖拽的文件。

  如果文件是图片,就用FileReader的readAsDataURL方法将图片读取为DataURL字符串存入内存,并显示在p中。

  如果文件是txt文本,就用FileReader的readAsText方法将文件读取为文本(默认为UTF-8格式),放到内存中,然后显示在p中。

下载本文
显示全文
专题