利用HTML5上传文件并显示在前端预览,以图片为例
由于项目中有上传文件的功能,所以这次单独拿出来研究研究,我上网查了查,以前都是用iframe,但是自从HTML5出世之后,就可以利用H5的一些特性来上传文件了,啥也不说了,我上代码了
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>html5实现上传</title> <style type="text/css"> #result{ width: 200px; height:112px; border:1px solid #eee; } #result img{ width: 200px; } input{ width: 70px; margin-top: 10px; } @-moz-document url-prefix() { input { width:65px; } }/*单独对火狐进行设置*/ </style> </head> <body> <div id = "result"></div> <input id="pic" type="file" name = 'pic' accept = "image/*" onchange = "selectFile()"/> <!-- <button onclick = "handIn()">提交</button> --> <script type="text/javascript"> //var files = document.getElementById('pic').files; var form = new FormData();//通过HTML表单创建FormData对象 var url = '127.0.0.1:8080/' function selectFile(){ var files = document.getElementById('pic').files; console.log(files[0]); if(files.length == 0){ return; } var file = files[0]; //把上传的图片显示出来 var reader = new FileReader(); // 将文件以Data URL形式进行读入页面 console.log(reader); reader.readAsBinaryString(file); reader.onload = function(f){ var result = document.getElementById("result"); var src = "data:" + file.type + ";base64," + window.btoa(this.result); result.innerHTML = '<img src ="'+src+'"/>'; } console.log('file',file); /////////////////// form.append('file',file); console.log(form.get('file')); } //var xhr = new XMLHttpRequest(); // function handIn(){ // console.log(form.get('file')); // xhr.open("post", url, true); // xhr.addEventListener("readystatechange", function() { // var result = xhr; // if (result.status != 200) { //error // console.log('上传失败', result.status, result.statusText, result.response); // } // else if (result.readyState == 4) { //finished // console.log('上传成功', result); // } // }); // } </script> </body> </html>
结果如下
下面被我注释的是通过AJAX上传文件,把文件传到后台的代码,由于没有后台接口供我测试,url也不对,所以只能写成这样了
下面附上input中的“type = file” 中accept属性的一些配置,上传什么文件配置什么设置都在下边

浙公网安备 33010602011771号