HTML5 ( 通过文件输入框读取文件为base64文件, 并借助canvas压缩 ) FileReader, files, drawImage
2017-04-09 22:04
597 查看
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS文件上传</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css"> * { margin: 0; padding: 0; } #img { display: block; width: 9.98rem; height: 6rem; border: .01rem solid black; } #file { display: block; margin: -6rem 0 0 0; opacity: 0; width: 10rem; height: 6rem; } #submit { display: block; width: 5rem; height: 2rem; margin: .5rem 2.5rem; font-size: .45rem; text-align: center; line-height: 2rem; } </style> </head> <body> <img id="img" src="" /> <input id="file" type="file" /> <input id="submit" type="button" value="提交文件" /> </body> </html> <script type="text/javascript"> // rem布局 $('html').css('font-size', $(window).width() / 10); // 实例化文件输入框的读取对象 var fileReader = new FileReader(); var base64File = null; // 当文件输入框读取到文件时 $('#file').on('change', function(){ // 获取文件列表 var fileList = $("#file")[0].files; fileReader.onload = function(e){ // 获取扩展名 var extensionName = fileList[0].name.split('.'); extensionName = extensionName[extensionName.length -1]; // 获取文件的base64编码 var base64 = e.target.result; // 将读取 文件放置到一个img标签 $('#img').attr('src', base64); // 当文件加载完成后进行压缩 var img = $('#img')[0]; img.onload = function(){ // 将文件和文件扩展名拼接 base64File = cutDowmImg(img, 100).split(',')[1] + "." + extensionName; // 将拼接后的字符串加密 base64File = encodeURIComponent(base64File); } } fileReader.readAsDataURL(fileList[0]); }); // 提交图片 $('#submit').on('click', function(){ console.log(base64File); $.post("http://192.168.0.105/WebTest/Base64UploadServlet", {file: base64File}, function(e){ console.log(e); }) }); // 压缩图片的方法 function cutDowmImg(img, width){ var canvas = document.createElement("canvas"); canvas.width = Math.min(img.width, width); canvas.height = img.height*width/img.width; var cxt = canvas.getContext("2d"); cxt.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); return canvas.toDataURL(); } </script>
相关文章推荐
- 借助FileReader实现将文件编码为Base64后通过AJAX上传
- 借助FileReader实现将文件编码为Base64后通过AJAX上传
- HTML5之FileReader读取文件
- 利用input type=file和FileReader API实现在浏览器客户端通过选择对话框读取文件
- JavaScript通过filereader接口读取文件
- html5 使用FileReader对象的readAsDataURL方法来读取图像文件
- HTML5 FileReader分布读取文件以及其方法简介
- html5 javascript FileReader 读取文件并传回后台保存
- html5 FileReader+Canvas 前端压缩图片(IE9及以下浏览器不支持)
- HTML5文件读取FileReader及文件读取模块的封装
- BufferedReader和FileReader读取txt文件乱码问题
- 转:FileReader详解与实例---读取并显示图像文件
- FileReader详解与实例---读取并显示图像文件
- 通过Glib库中的GKeyFile来读取配置文件
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- 使用FileReader和FileWriter读取写入文件内容
- Java 通过 BufferReader 实现 文件 写入读取 示例
- BufferedReader + FileReader读取文件并打印出来每一行(Java文件操作)
- HTML5 File Reader file upload 文件上传 test
- 原生Js基于HTML5 FileReader&canvas制作的banner广告图片插件