图片上传:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery-1.12.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
if(typeof FileReader == "undified") {
alert("您老的浏览器不行了!");
}

function showDataByURL() {
var resultFile = document.getElementById("fileDemo").files[0];
if (resultFile) {
var reader = new FileReader();
reader.readAsDataURL(resultFile);
reader.onload = function (e) {
var urlData = this.result;
document.getElementById("result").innerHTML += "<img src='" + urlData + "' alt='" + resultFile.name + "' />";
};
}
}

function showDataByBinaryString() {
var resultFile = document.getElementById("fileDemo").files[0];
if (resultFile) {
var reader = new FileReader();
//异步方式,不会影响主线程
reader.readAsBinaryString(resultFile);
reader.onload = function(e) {
var urlData = this.result;
document.getElementById("result").innerHTML += urlData;
};
}
}

function showDataByText() {
var resultFile = document.getElementById("fileDemo").files[0];
if (resultFile) {
var reader = new FileReader();
reader.readAsText(resultFile,'gb2312');
reader.onload = function (e) {
var urlData = this.result;
document.getElementById("result").innerHTML += urlData;
};
}
}

</script>
</head>
<body>
<input type="file" name="fileDemo" id="fileDemo" multep/>
<input type="button" value="readAsDataURL" id="readAsDataURL" onclick="showDataByURL();"/>
<input type="button" value="readAsBinaryString" id="readAsBinaryString" onclick="showDataByBinaryString();"/>
<input type="button" value="readAsText" id="readAsText" onclick="showDataByText();"/>
<div id="result">
</div>
</body>
</html>

图片拖拽上传:

<!DOCTYPE html>
<html>
<head lang="en"> <meta charset="UTF-8">
<title></title>
<style> #div{
width: 200px;
height: 200px;
margin: 100px;
}
</style>
<script>
/* dataTransfer对象:
16 1.files:获取外部拖拽的文件,返回一个filesList列表,是对象集合,自然有length属性;
17 2.filesList下有个type属性,返回文件的类型;
18 3.fileReader:读取文件信息
19 ①readAsDataURL(argument):参数为读取的文件对象,将文件读取为DataUrl;
20 ②onload:当文件读取成功时触发此事件;
21 ③this.result:获取读取的文件数据,如果是图片,将返回base64格式的图片数据;
22 */
onload= function () {
var oDiv=document.getElementById('div');
var oUl=document.getElementById('ul');

oDiv.ondragenter= function () {
this.innerHTML='现在可以释放文件了';
}
oDiv.ondragover= function (ev) {
ev=ev||event;
ev.preventDefault();
}
oDiv.ondragleave= function () {
this.innerHTML='将文件拖放到此区域';
}
oDiv.ondrop= function (ev) {
ev=ev||event;
ev.preventDefault();
var fs = ev.dataTransfer.files;
//浏览器的默认行为是:将图片文件拖放到此处会在浏览器中打开图片 var fs=ev.dataTransfer.files;
//console.log(fs.length);
//console.log(fs[0].type);
for(var i= 0,len=fs.length;i<len;i++){
/* indexOf(searchvalue,formindex):返回某个指定的字符串值在字符串中首次出现的位置。
45 1.searchvalue:规定需检索的字符串类型;
46 formindex:可选的整数参数,规定在字符串中需检索的位置,它的合法取值是0-stringObject.length-1,如果省略此参数,则将从字符串的首字符开始检索;
47 2.该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。
48 如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
49 3.indexOf()对大小写敏感;
50 4.如果要检索的字符串没有出现,则返回-1;
51 */
if(fs[i].type.indexOf('image')!==-1){
var fd = new FileReader();
fd.readAsDataURL(fs[i]);
fd.onload= function () {
//console.log(this.result);
var oLi=document.createElement('li');
var oImg=document.createElement('img');
oImg.src=this.result;
oUl.appendChild(oLi);
oLi.appendChild(oImg);
}
}else{
alert('亲,请上传图片!');
}
}

}
}
</script> </head>
<body>
<div id="div">将文件拖放到此区域</div>
<ul id="ul"></ul>

</body>
</html>

h5图片上传预览与拖拽上传的更多相关文章

  1. ASP.NET工作笔记之一:图片上传预览及无刷新上传

    转自:http://www.cnblogs.com/sibiyellow/archive/2012/04/27/jqueryformjs.html 最近项目里面涉及到无刷新上传图片的功能,其实也就是上 ...

  2. 支持多文件上传,预览,拖拽,基于bootstra的上传插件fileinput 的ajax异步上传

    首先需要导入一些js和css文件 <link href="__PUBLIC__/CSS/bootstrap.css" rel="stylesheet"&g ...

  3. 支持多文件上传,预览,拖拽,基于bootstrap的上传插件fileinput 的ajax异步上传(转载)

    首先需要导入一些js和css文件 <link href="__PUBLIC__/CSS/bootstrap.css" rel="stylesheet"&g ...

  4. C# MVC Ajax上传多个图片,可预览,可重复上传等

    //上传文件 function UploadFile(el) { var dataValue = $(el).attr("data-id"); var ele = dataValu ...

  5. js 移动端 多图上传 预览 删除 base64转为url 传给后端

    说下主要的逻辑,首先是利用input type="file",上传文件,然后判断文件类型是否是图片,这里要注意(multiple,安卓一次一张,ios可以多张). 接着把本地图片转 ...

  6. Javascript之图片上传预览

    使用Javascript之图片上传预览,我们无需上传到服务器中,兼容所有浏览器. 关键方法是使用微软库filter:progid:DXImageTransform.Microsoft.AlphaIma ...

  7. 模拟QQ心情图片上传预览

    出于安全性能的考虑,目前js端不支持获取本地图片进行预览,正好在做一款类似于QQ心情的发布框,找了不少jquery插件,没几个能满足需求,因此自己使用SWFuplad来实现这个图片上传预览. 先粘上以 ...

  8. React + js-xlsx构建Excel文件上传预览功能

    首先要准备react开发环境以及js-xlsx插件 1. 此处省略安装react安装步骤 2.下载js-xlsx插件 yarn add xlsx 或者 npm install xlsx 在项目中引入 ...

  9. 实现拖拽上传文件的一款小控件——dropzone

    由于专注所以专业.非常多小巧的东西乍一看非常不起眼,却在特定的领域表现不俗,就是由于集中了热情. dropzone就是这样一款小控件,实现拖拽上传.它不依赖于其他像jquery等JS库.并且支持多方面 ...

随机推荐

  1. POJ1061 青蛙的约会-拓展欧几里得

    Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...

  2. System.getProperty()方法获取大全

    System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 ...

  3. js 小工具-- 获取主机名

    <script type="text/javascript"> function getHostName(url) { var host = "null&qu ...

  4. 众安「尊享e生」果真牛的不可一世么?

    近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...

  5. mysql 主从复制 实践

    异步主从复制   主从部署步骤: 备份还原 使用mysqldump或者xtrabackup 把主库现有基础数据还原到从库 授权 grant replication slave on *.* 给从库一个 ...

  6. Brn系列网上商城发布指南

    以BrnMall为例: 第一步:将vs的编译方式改为Release,如下图: 第二步:打开BrnMall.Web项目下的Web.config文件,将compilation节点的debug值改为&quo ...

  7. Ruby-Array数组

    1.创建数组 a=Array.new(6,obj=nil)  #=> [nil, nil, nil, nil, nil, nil] 设置默认值 a=Array.new(6)           ...

  8. perl中的运算符

    字符计算的运算符

  9. oracle11g 修改字符集

    查看当前字符集SQL语句: select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; 修改字符集操作如下,首 ...

  10. Linux系统下 解决Qt5无法连接MySQL数据库的方法

    Linux平台下解决Qt5连接mysql数据库的问题:输入sudo apt-get install libqt5sql5-mysql解决,这种方法只能解决Qt是用sudo apt-get instal ...