• php 获取压缩包名


    参考链接: https://segmentfault.com/q/1010000000721799

    通过curl方式获取压缩包名:

    function getFile($url, $save_dir = '', &$filename = '', $type = 0) {  
    
    
        if (trim($url) == '') {  
            return false;  
        }  
        if (trim($save_dir) == '') {  
            $save_dir = './';  
        }  
        if (0 !== strrpos($save_dir, '/')) {  
            $save_dir.= '/';  
        }  
        //创建保存目录  
        if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {  
            return false;  
        }  
        //获取远程文件所采用的方法  
        if ($type) {  
            $ch = curl_init();  
            $timeout = 5;  
            curl_setopt($ch, CURLOPT_URL, $url);  
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    
            curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    
            $tmpInfo = curl_exec($ch);
            list($headers, $body) = explode("
    
    ", $tmpInfo, 2);
    
            // echo $headers;
    
            $header_array = explode("
    ", $headers);
    
            // print_r($header_array);
    
    
            foreach($header_array as $header_value) {
    
                $header_pieces = explode(':', $header_value);
                if(count($header_pieces) > 1) {
    
                      for ($i=0; $i <(count($header_pieces)/2) ; $i++) {                   
                          $headersArr[$header_pieces[$i*2]] = trim($header_pieces[2*$i+1]);                    
                      }
                
                }
            }
    
    
            // print_r($headersArr);
    
            $file_name = $headersArr['Content-Disposition'];
    
            // echo $file_name;
    
            $filename = exec("echo '$file_name' | awk -F "=" '/filename/{print $2}'",$output,$ret);
    
            // echo $filename;
    
            // print_r($output);
            // $file_type = $headersArr['Content-Type'];
            $content = $body;
    
            // echo $file_name."<br>";
            // print_r($headers);
    
            // $content = curl_exec($ch);  
            curl_close($ch);  
        } else {  
            ob_start();  
            readfile($url);  
            $content = ob_get_contents();  
            ob_end_clean();  
        }  
    
        // print_r($_SERVER);
    
        //echo $content;  
        $size = strlen($content);  
        //文件大小  
        $fp2 = @fopen($save_dir . $filename, 'a');  
        fwrite($fp2, $content);  
        fclose($fp2);  
        unset($content, $url);  
        return array(  
            'file_name' => $filename,  
            'save_path' => $save_dir . $filename,  
            'file_size' => $size  
        );  
    
    
    
    }

    2、curl -O -d "key=val" url 这样返回的内容就保存为同名文件了。

  • 相关阅读:
    spring的@Transactional注解详细用法
    解决:No qualifying bean of type [org.springframework.jdbc.core.JdbcTemplate] found for dependency
    SpringBoot2 启动报错 Failed to auto-configure a DataSource
    SpringBoot2 全局异常处理
    Intellij IDEA 将工程转换成maven工程 详解
    js性能优化
    JDK故障处理工具箱
    编写高性能的jquery代码
    maven工程解决jar包冲突依赖问题
    spring aop中xml配置文件中标签和属性对应的类
  • 原文地址:https://www.cnblogs.com/hzijone/p/6282468.html
Copyright © 2020-2023  润新知