8-07 6,152 views
目前无刷新预览图片一般有以下兼容性高到低排序的三种方法:
1.ajax提交图片后获取返回路径;
2.通过canvas将图片绘制显示;
3.通过window.url.createObjectURL(blob)创建blob:url
下面上一个方法3的简单案例,供有需要的朋友了解
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <title>blobUpload</title>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <style>
- #uploaderFiles{
- width: 200px;
- height: 200px;
- margin-top: 10px;
- background: no-repeat center center;
- background-size: cover;
- }
- </style>
- <script src="https://cdn.bootcss.com/zepto/1.2.0/zepto.js"></script>
- </head>
- <body>
- <input id="uploaderInput" type="file" accept="image/*">
- <div id="uploaderFiles"></div>
- <script type="text/javascript">
- $(function(){
- var $uploaderInput = $("#uploaderInput"),
- $uploaderFiles = $("#uploaderFiles");
- $uploaderInput.on("change", function(e){
- var src, url = window.URL || window.webkitURL || window.mozURL;
- var file = e.target.files[0];
- if (url) {
- src = url.createObjectURL(file);
- } else {
- src = e.target.result;
- }
- $uploaderFiles.attr("style","background-image:url("+src+")");
- });
- });
- </script>
- </body>
- </html>
demo:http://wx.karlew.com/blobUpload/
值得注意的是,IE9及以下浏览器不支持createObjectURL方法和blob对象,故此方法只可用于手机浏览器
此外,在ios上竖屏拍照会有旋转90度的问题,需要用exif插件解决,下面附上优化demo