上传图片本地预览

在上传图片的时候,希望在浏览器上能预览图片。

之前的做法是ajax方式上传图片,返回服务器的图片访问地址,本地预览。

在想有没有办法,不上传直接预览。之前记得是因为安全性原因,不能预览。但是着找到了这么个示例,贴出来大家看看。兼容性没去校验。

效果演示:http://demo.dreamlu.net/image-upload-view.html

<html>
<head>
  <meta charset="UTF-8">
  <title>如梦技术IT-图片上传预览</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <meta name="format-detection" content="telephone=no">
  <meta name="renderer" content="webkit">
  <meta http-equiv="Cache-Control" content="no-siteapp">
</head>
<body>
<input type="file" id="user-pic">
<img id="viewImg">
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
//图片预览,兼容各个浏览器
function previewImage(file) {
   var porImg  = $(file),
       viewImg = $('#viewImg');
   var image = porImg.val();
   if (!/^\S*\.(?:png|jpe?g|bmp|gif)$/i.test(image)) {
       layer.msg('请选择图片~', {shift: 6});
       porImg.val("");
       return false;
   }
   if (file["files"] && file["files"][0]) {
       var reader = new FileReader();
       reader.onload = function(evt){
           viewImg.attr({src : evt.target.result});
       }
       reader.readAsDataURL(file.files[0]);
   } else {
       var ieImageDom = document.createElement("div");
       var proIeImageDom = document.createElement("div");
       $(ieImageDom).css({
           float: 'left',
           position: 'relative',
           overflow: 'hidden',
           width: '100px',
           height: '100px'
       }).attr({"id":"view"});
       $(proIeImageDom).attr({"id": porImg.attr("id")});
       porImg.parent().prepend(proIeImageDom);
       porImg.remove();
       file.select();
       path = document.selection.createRange().text;
       $(ieImageDom).css({"filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + path + "\")"});
   }
}

    //图片上传预览
    $('#user-pic').change(function(e){
        previewImage(this);
    });
</script>
</body>
</html>