zoukankan      html  css  js  c++  java
  • 使用html5 FileReader获取图片,并异步上传到server(不使用iframe)

    使用html5 FileReader获取图片,并异步上传到server(不使用iframe)


    原理:

    1.使用FileReader 读取图片的base64编码

    2.使用ajax。把图片的base64编码post到server。

    3.依据接收到post的数据分析图片的类型(jpg,gif,png)。并把base64_decode后的数据生成相应类型的图片文件。


    html:

    <!DOCTYPE HTML PUBLIC>
    <html>
     <head>
      <meta charset="utf-8">
      <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
      <title>使用html5 FileReader获取图片。并异步上传到server(not iframe)</title>
    
      <style type="text/css">
        body{margin: 0px; background:#f2f2f0;}
        p{margin:0px;}
        .title{color:#FFFF00; background:#000000; text-align:center; font-size:24px; line-height:50px; font-weight:bold;}
        .file{position:absolute; 100%; font-size:90px;}
        .filebtn{display:block; position:relative; height:110px; color:#FFFFFF; background:#06980e; font-size:48px; line-height:110px; text-align:center; cursor:pointer; border: 3px solid #cccccc;}
        .filebtn:hover{background:#04bc0d;}
        .showimg{margin:10px auto 10px auto; text-align:center;}
      </style>
    
      <script type="text/javascript">
      window.onload = function(){
    
        // 选择图片
        document.getElementById('img').onchange = function(){
    
            var img = event.target.files[0];
    
            // 推断是否图片
            if(!img){
                return ;
            }
    
            // 推断图片格式
            if(!(img.type.indexOf('image')==0 && img.type && /.(?:jpg|png|gif)$/.test(img.name)) ){
                alert('图片仅仅能是jpg,gif,png');
                return ;
            }
    
            var reader = new FileReader();
            reader.readAsDataURL(img);
    
            reader.onload = function(e){ // reader onload start
                // ajax 上传图片
                $.post("server.php", { img: e.target.result},function(ret){
                    if(ret.img!=''){
                        alert('upload success');
                        $('#showimg').html('<img src="' + ret.img + '">');
                    }else{
                        alert('upload fail');
                    }
                },'json');
            } // reader onload end
        }
    
      }
      </script>
    
     </head>
    
     <body>
      <p class="title">使用html5 FileReader获取图片,并异步上传到server(not iframe)</p>
      <p><input type="file" class="file" id="img"><label class="filebtn" for="img" title="JPG,GIF,PNG">请选择图片</label></p>
      <p class="showimg" id="showimg"></p>
     </body>  
    </html>

    server.php

    <?

    php $img = isset($_POST['img'])? $_POST['img'] : ''; // 获取图片 list($type, $data) = explode(',', $img); // 推断类型 if(strstr($type,'image/jpeg')!=''){ $ext = '.jpg'; }elseif(strstr($type,'image/gif')!=''){ $ext = '.gif'; }elseif(strstr($type,'image/png')!=''){ $ext = '.png'; } // 生成的文件名称 $photo = time().$ext; // 生成文件 file_put_contents($photo, base64_decode($data), true); // 返回 header('content-type:application/json;charset=utf-8'); $ret = array('img'=>$photo); echo json_encode($ret); ?>


  • 相关阅读:
    Number Two
    蝴蝶结
    webug3.0靶场渗透基础Day_1
    SQL SERVER2014的安装
    SQLILABS学习笔记(一)
    关于暴力破解的一些学习笔记(pikachu)
    sql注入学习笔记
    CSRF与平行越权的区别
    任意文件下载(pikachu)
    XSS跨站脚本攻击学习笔记(pikachu)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6952685.html
Copyright © 2011-2022 走看看