zoukankan      html  css  js  c++  java
  • php base64各种上传

    <?php
    /* 
     *  Bpm接口 所需要的处理方法
     */
    trait Bpm_trait{
        
        /* 处理base64文件 */
        public function create_base64_file($base64_file, $up_dir){
            header("content-type:text/html;charset=utf-8");
            $base64_img = trim($base64_file);
            
            if(!file_exists($up_dir)){
                mkdir($up_dir,0777);
            }
             
            // if(preg_match('/^(data:s*image/(w+);base64,)/', $base64_img, $result)){
            if(preg_match('/^(data:s*(image|application)/(w+);base64,)/', $base64_img, $result)){
                $type = $result[3];
                if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png','pdf'))){
                    // $new_file = $up_dir.date('YmdHis_').mt_rand().'.'.$type;
                    $fileName = date('YmdHis_').mt_rand().'.'.$type;
                    $new_file = $up_dir.$fileName;                     
                    if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){
                        // $img_path = $_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"]."/server/api/".str_replace('./', '', $new_file);
                        $img_path = $_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"]."/server/api/subscriber_upload_file/".$fileName;
                        
                        return $img_path;
                    }else{
                       $this->db->pdo->rollBack();
                       throw new Exception("图片上传失败");
                    }
                }else{
                    $this->db->pdo->rollBack();
                    throw new Exception("图片上传类型错误");
                }         
            }else{
               $this->db->pdo->rollBack();
               throw new Exception("图片上传错误");
            }        
        } 
    
        
        /* 上传订单合同 */
        public function upload_orderContract_file($base64_file, $up_dir){
            header("content-type:text/html;charset=utf-8");
            $base64_img = trim($base64_file);
            
            if(!file_exists($up_dir)){
                mkdir($up_dir,0777);
            }
    
             $type_arr = array(
                    'msword' => 'doc',
                    'vnd.openxmlformats-officedocument.wordprocessingml.document'   => 'docx',
                    'vnd.ms-excel'                                                  => 'xls',  
                    'vnd.openxmlformats-officedocument.spreadsheetml.sheet'         => 'xlsx', 
                    'pdf'                                                           => 'pdf',  
                    'vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', 
                    'vnd.ms-powerpoint'                                             => 'ppt',  
             );
    
            if(preg_match('/^(data:s*application/([^;]+);base64,)/', $base64_img, $result)){
                $type = $result[2];
                if(in_array($type,array('msword', 'vnd.openxmlformats-officedocument.wordprocessingml.document', 'pdf', 'pptx', 'ppt'))){
                    $fileName = date('YmdHis_').mt_rand().'.'.$type_arr[$type];
                    $new_file = $up_dir.$fileName;       
                    if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){
                        // $file_path = $_SERVER["HTTP_HOST"]."/server/api/".str_replace('./', '', $new_file);
                        $file_path = $_SERVER["HTTP_HOST"]."/server/api/orderContract_upload_file/".$fileName;                    
                        return $file_path;
                    }else{
                       $this->db->pdo->rollBack();
                       throw new Exception("合同文件上传失败");
                    }
                }else{
                    $this->db->pdo->rollBack();
                    throw new Exception("合同文件上传类型错误");
                }         
            }else{
               $this->db->pdo->rollBack();
               throw new Exception("合同文件上传错误");
            }        
        }
           
        /* curl post 请求 */
        public function curl_post($url,$data,$headers){        
             // $headers = array(    
                // 'Cookie: JSESSIONID=A02439BE65581E57C287BF798111FFAB'            
            // );    
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_TIMEOUT, 0); //设置超时
            if(0 === strpos(strtolower($url), 'https')) {
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //对认证证书来源的检查
              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //从证书中检查SSL加密算法是否存在
            }
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
            $output = curl_exec($ch);//CURLOPT_RETURNTRANSFER 不设置  curl_exec返回TRUE 设置  curl_exec返回json(此处) 失败都返回FALSE
            curl_close($ch);
            return $output;
        }
        
        /**
         * 求两个日期之间相差的天数
         * (针对1970年1月1日之后,求之前可以采用泰勒公式)
         * @param string $day1
         * @param string $day2
         * @return number
         */
        public function diffBetweenTwoDays($day1, $day2){
          $second1 = strtotime($day1);
          $second2 = strtotime($day2);
            
          if ($second1 < $second2) {
            $tmp = $second2;
            $second2 = $second1;
            $second1 = $tmp;
          }
          $day = (($second1 - $second2) / 86400)+1;
          return $day;
        }
        
    }
  • 相关阅读:
    Pytorch环境搭建(Anaconda+Pycharm,清华镜像源)
    Leetcode 220. 存在重复元素 III (Contains Duplicate III)
    Leetcode 217. 存在重复元素 (Contains Duplicate)
    Leetcode 219. 存在重复元素 II (Contains Duplicate II)
    Leetcode 1073. 负二进制数相加(Adding Two Negabinary Numbers)
    极客战记(codecombat)攻略-地牢-Kithgard 地牢
    python elasticsearch 深度分页——scroll的使用与清除(clear_scroll)
    sqlmap参数
    文件包含
    web安全
  • 原文地址:https://www.cnblogs.com/gaogaoxingxing/p/12934625.html
Copyright © 2011-2022 走看看