app端(jsonp)上传图片

这是html代码

<a href="#">
       <p class="fl">头像
           <input id="files" type="file" onchange="previewImage(this, 'prvid')" multiple="multiple">
       </p>
       <i class="fr"><div id="prvid"></div></i>
    </a>  
    `

  
---

这是js代码:
    
    `<script>
        function previewImage(file, prvid) {
          /* file:file控件       * prvid: 图片预览容器       */        var tip = "Expect jpg or png or gif!"; // 设定提示信息        var filters = {
                "jpeg" : "/9j/4",
                "gif" : "R0lGOD",
                "png" : "iVBORw"        }
            var prvbox = document.getElementById(prvid);
            prvbox.innerHTML = "";
            if (window.FileReader) { // html5方案            for (var i=0, f; f = file.files[i]; i++) {
                    var fr = new FileReader();
                    fr.onload = function(e) {
                        var src = e.target.result;
                        if (!validateImg(src)) {
                            alert(tip)
                        } else {
                            update(src);
                            showPrvImg(src);
                        }
                    }
                    fr.readAsDataURL(f);
                }
            } else { // 降级处理            
                if ( !/\.jpg$|\.png$|\.gif$/i.test(file.value) ) {
                    alert(tip);
                } else {
                    showPrvImg(file.value);
                }
            }
    
            function validateImg(data) {
                var pos = data.indexOf(",") + 1;
                for (var e in filters) {
                    if (data.indexOf(filters[e]) === pos) {
                        return e;
                    }
                }
                return null;
            }
    
            function showPrvImg(src) {
                var img = document.createElement("img");
                img.src = src;
                prvbox.appendChild(img);
            }
    
            //update        str='';
            function update(src) {
                var re = /\+/g;
                var src = src.replace(re,'-');
    
                var name = Math.random()*100000000000000000;//文件名
                alert(name);
                var a = src.length;
                console.log(src)
                var len= Math.ceil(a/1000);
    //alert(src);            for(var i=0;i<len;i++){
                    var b=1000*i;
                    var json = '{"content":"'+src.substr(b,1000)+'","name":"'+name+'","name_":"'+i+'"}';
    //                setTimeout(function(){            postInfo('upload',json,0);//用户订单查询//                },1000);            }
            }
        }
    
        //成功
        function success_db(){
    
        };
    
        //失败
        function error_db() {
    
        }
    </script>

---

这是php后台代码:

/*文件的上传*/
public function actionUpload(){    
  if ($this->_data)    {        
  $h_data = json_decode(
  $this->_data, true);        
    @$content = $h_data['content'] !=''? $h_data['content'] : false;//内容        
    @$name = $h_data['name'] !=''? $h_data['name'] : false;//文件夹        
    @$name_ = $h_data['name_'] !=''? $h_data['name_'] : false;//文件名    
  }

  if(!is_dir($name)){        
  mkdir($name);    
  }    

  $result=fopen($name.'/'.$name_,'w+');    
  fwrite($result,$content);    
  fclose($result);    
  $this->ReturnJson(1, 'errcode', 200);
}


/*把图片碎片拼接起来*/
public function actionDo(){    
  $name = '12152599222857208';    
  $str = '';    
  for($i=0;$i<28;$i++){        
  $str .= file_get_contents($name.'/'.$i);    
  }    
  $str = substr($str,strrpos($str,',')+1);    
  $str = str_replace('-',"+",$str);    
  $str=base64_decode($str);    
  $result=fopen('2.jpeg','w+');    
  fwrite($result,$str);
}  
Last modification:June 22nd, 2019 at 01:08 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment