使用HTML5 FILE API上传图片移动端缩略图兼容问题

我什么都不说,上代码:

<!DOCTYPE html>
<html>
<head>
	<title>pc和手机端的图片上传处理</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width" />
</head>
<body>
	<p>选择:</p>
	<p><input type="file" accept="image/*" id="upload" name="upload"></p>
	<div><button id="surebtn">确定上传</button></div>
	<p>图片预览:</p>
	<p id="preview"></p>
	<script type="text/javascript">

		var upload = document.getElementById('upload'),
			preview = document.getElementById('preview'),
			surebtn = document.getElementById('surebtn'),
			imgurl = '';

		upload.addEventListener('change',handleFile,false);
		surebtn.addEventListener('click',upLoadFile,false);

		function handleFile(){
			window.URL = window.URL || window.webkitURL;
			var sUserAgent= navigator.userAgent.toLowerCase();
			var selected_file = upload.files[0];

			if(sUserAgent.match(/android/i) == "android"){
		    	var img = new Image();
			    img.src = window.URL.createObjectURL(selected_file);
			    preview.innerHTML = '';
			    preview.appendChild(img);

			    var reader = new FileReader();
			    reader.onload = function(e) { imgurl = e.target.result; };
			    reader.readAsDataURL(selected_file);

			}else{

				//判断文件类型是否为图片
				 var imageType = /image.*/;

			    if (!selected_file.type.match(imageType)) {
			      return false;
			    }

			    var img = document.createElement('img');
			    img.file = selected_file;
			    preview.innerHTML = '';
			    preview.appendChild(img);

			    img.onload = function(){
	    			imgurl = img.src;
			    }

			    var reader = new FileReader();
			    reader.onload = function(e) { img.src = e.target.result; };
			    reader.readAsDataURL(selected_file);
			}
		}

		function upLoadFile(){
			var start = imgurl.indexOf(',')+1;
			dataurl = imgurl.substr(start);

			var xmlhttp = new XMLHttpRequest();
			xmlhttp.open('post','todo.php',true);
			xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
			xmlhttp.setRequestHeader('X_Requested-With','XMLHttpRequest');
			xmlhttp.send('dataurl='+encodeURIComponent(dataurl));

			xmlhttp.onreadystatechange=function(){
				if (xmlhttp.readyState==4 && xmlhttp.status==200){
					console.log(xmlhttp.responseText)
				}
			}
		}

	</script>
</body>
</html>

我已经传到了github上,地址是:https://github.com/fonglezen/mbUploadImg

主要是解决某些浏览器存在base64编码显示不出图片来,而是blob二进制编码的问题。

预览网址:http://www.fonglezen.com/project/mbUploadImg/

时间: 2024-07-29 15:10:17

使用HTML5 FILE API上传图片移动端缩略图兼容问题的相关文章

HTML5 File API — 让前端操作文件变的可能

前言 在 HTML5 File API 出现之前,前端对于文件的操作是非常有局限性的,大多需要配合后端实现.出于安全角度考虑,从本地上传文件时,代码不可能获取文件在用户本地的地址,所以纯前端不可能完成一些类似图片预览的功能.但是 File API 的出现,让这一切变成了可能. 跟着楼主由浅入深,了解下强大的 File API 吧. FileList FileList 对象针对表单的 file 控件.当用户通过 file 控件选取文件后,这个控件的 files 属性值就是 FileList 对象.

HTML5 file API加canvas实现图片前端JS压缩并上传 (转载)

一.图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致上传失败风险. 最最重要的体验改进点:省略了图片的再加工成本.很多网站的图片上传功能都会对图片的大小进行限制,尤其是头像上传,限制5M或者2M以内是非常常见的.然后现在的数码设备拍摄功能都非常出众,一张原始图片超过2M几乎是标配,此时如果用户想把手机或相机中的某个得意图片

HTML5 File API初探 支持文件拖放上传功能

新一代Web开发标准HTML 5可以带来远远超出其本身作为一种标记语言的能力,除我们之前介绍的HTML 5可完美支持视频音频元素外,还提供一些强大的脚本工具,负责监督HTML5发展进程的W3C组织,刚刚出版了一份有关文档操作API的规格草案,HTML5 File API 接口功能. 该HTML5 File API的设计初衷,是改善基于浏览器的Web应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 ﹤input type=”file”﹥ 来处理文件上传. 更为惊喜的是

HTML5 file api读取文件的MD5码工具

1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆兼容: 3.缺陷:当上传大文件时,需要较长的时间才能扫描出MD5码: 4.关于引用:其中引用了js文件(spark-md5.js) <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo

HTML5 File API — 拖拽显示

1.HTML5拖拽 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 如果是html中的元素,要进行拖动,需要设置draggable为true. 下面的代码显示了img在两个div里任意拖动. 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <style type="text/css"> 5 #div1, #div2 6 {float:left; width:100px; height:35px;

javascript 使用Html5 File Api进行文件读取

javascript 使用Html File Api进行文件读取,注意"读取"是只读不写,不可以主动获取浏览器所在主机的文件列表. Html5 中 FileApi主要有 FileUpload, File,FileList,FileError,Blob,FileReader,DataTransfer. 这里主要测试File.因此有必要给一个 test target <form action="javascript:void(0)" method="po

HTML5 File API解读

1,概述 Web应用应该具备处理广泛用户输入问题的能力,例如在Web富应用中,用户希望上传文件到服务器.File API定义了访问文件的基本操作途径,包括文件.文件列表集.错误处理等,同时,File API还定义了描述文件异步处理进程中的一些元数据.接下来,我们一起看看File的应用. 2,FileList接口 接口描述: 1 interface FileList { 2 getter File? item(unsigned long index); 3 readonly attribute u

HTML5 File API +JavaSevlet 实现文件上传实时更新进度

1. [代码]java1.8+Tomcat8.0 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 7

HTML 5 File API:文件拖放上传功能

即将到来的 html5 规范有几个特性,以致使 HTML 远远超出其本身作为一种标记语言的能力,并为 Web 开发者提供了一些强大的脚本工具.负责监督 HTML5 发展进程的 W3C 组织,刚刚出版了一份强有力的规格草案 – HTML5 File API 接口功能. 该 API 的设计初衷,是改善基于浏览器的 Web 应用程序处理文件上传的方式,使文件直接拖放上传成为可能.草案定义了新的输入选项 <input type=”file”> 来处理文件上传. 更为惊喜的是,该 API 为开发者提供了