注册送现金一元秒提现

  • <tr id='7ielg'><strong id='7ielg'></strong><small id='7ielg'></small><button id='7ielg'></button><li id='7ielg'><noscript id='7ielg'><big id='7ielg'></big><dt id='7ielg'></dt></noscript></li></tr><ol id='7ielg'><option id='7ielg'><table id='7ielg'><blockquote id='7ielg'><tbody id='7ielg'></tbody></blockquote></table></option></ol><u id='7ielg'></u><kbd id='7ielg'><kbd id='7ielg'></kbd></kbd>

    <code id='7ielg'><strong id='7ielg'></strong></code>

    <fieldset id='7ielg'></fieldset>
          <span id='7ielg'></span>

              <ins id='7ielg'></ins>
              <acronym id='7ielg'><em id='7ielg'></em><td id='7ielg'><div id='7ielg'></div></td></acronym><address id='7ielg'><big id='7ielg'><big id='7ielg'></big><legend id='7ielg'></legend></big></address>

              <i id='7ielg'><div id='7ielg'><ins id='7ielg'></ins></div></i>
              <i id='7ielg'></i>
            1. <dl id='7ielg'></dl>
              1. <tr id='2r4ip'><strong id='2r4ip'></strong><small id='2r4ip'></small><button id='2r4ip'></button><li id='2r4ip'><noscript id='2r4ip'><big id='2r4ip'></big><dt id='2r4ip'></dt></noscript></li></tr><ol id='2r4ip'><option id='2r4ip'><table id='2r4ip'><blockquote id='2r4ip'><tbody id='2r4ip'></tbody></blockquote></table></option></ol><u id='2r4ip'></u><kbd id='2r4ip'><kbd id='2r4ip'></kbd></kbd>

                <code id='2r4ip'><strong id='2r4ip'></strong></code>

                <fieldset id='2r4ip'></fieldset>
                      <span id='2r4ip'></span>

                          <ins id='2r4ip'></ins>
                          <acronym id='2r4ip'><em id='2r4ip'></em><td id='2r4ip'><div id='2r4ip'></div></td></acronym><address id='2r4ip'><big id='2r4ip'><big id='2r4ip'></big><legend id='2r4ip'></legend></big></address>

                          <i id='2r4ip'><div id='2r4ip'><ins id='2r4ip'></ins></div></i>
                          <i id='2r4ip'></i>
                        1. <dl id='2r4ip'></dl>
                          1. 当前位置:首页 > PHP教程 > php应用 > 列表

                            php下载远程文件的源码介绍

                            发布:smiling 来源: PHP粉丝网  添加日期:2019-02-04 16:45:44 浏览: 评论:0 

                            BENPIANWENZHANGJIDAJIADAILAIDENEIRONGSHIGUANYUphpXIAZAIYUANCHENGWENJIANDEYUANMAJIESHAO,YOUYIDINGDECANKAOJIAZHI,YOUXUYAODEPENGYOUKEYICANKAOYIXIA,XIWANGDUINIYOUSUOBANGZHU。

                            注册送现金一元秒提现ZUIJINYUDAOXIAZAIpdfGESHIDEWENJIANCUNZAIWENTI XIAZAIHOUKANBULEHAIYOUXIAZAIBULEDEWENTI

                            DAZHISILUSHIJIANGWENJIANXIANCONGYUANCHENGXIAZAIHOU ZAIDUQUXIAZAIDAOYONGHUBENDIDIANNAO ZAIJIANGWENJIANSHANCHU BUDUOSHUOLE ZHIJIETIEYUANMA

                            注册送现金一元秒提现YUANCHENGWENJIANDEMINGMING ZUIHAOSHIYONGYINGWENSHUZIZUHE ,BUYAOYONGZHONGWENMINGMING ZONGHUIYUDAONIXIANGBUDAODEWENTI

                            LIMIANYEBAOKUOYASUOXIAZAI JUTI DAJIAKANYUANMA YANJIUBA

                            1. <?php 
                            2.  
                            3. set_time_limit(0); 
                            4.  
                            5. //允许下载的url 
                            6.  
                            7. $allowed_url = [ 
                            8.  
                            9.     ''
                            10.  
                            11.     ''
                            12.  
                            13.     '']; // 允许的url 
                            14.  
                            15. //$file_urls = post('file_urls'); 
                            16.  
                            17. $file_urls = '';//远程文件路径 
                            18.  
                            19.  
                            20.  
                            21. $file_url_arr = explode(','$file_urls); 
                            22.  
                            23. $file_url_arr = array_unique($file_url_arr); // 过滤相同url 
                            24.  
                            25.  
                            26.  
                            27. //foreach ($file_url_arr as $key => $val) { 
                            28.  
                            29. //    $url_arr = parse_url($val); 
                            30.  
                            31. //    if (!isset($url_arr['host']) || !in_array($url_arr['host'], $allowed_url)) { 
                            32.  
                            33. //        unset($file_url_arr[$key]); 
                            34.  
                            35. //    } 
                            36.  
                            37. //} 
                            38.  
                            39. if (emptyempty($file_url_arr)) { 
                            40.  
                            41.     $output = array
                            42.  
                            43.         'status' => 2, 
                            44.  
                            45.         'code' => 999, 
                            46.  
                            47.         'error' => '未找到合法url'
                            48.  
                            49.     ); 
                            50.  
                            51.     exit(json_encode($output)); 
                            52.  
                            53.  
                            54.  
                            55.  
                            56. $download_dir = ROOT.'download'.DIRECTORY_SEPARATOR; 
                            57.  
                            58. if(!file_exists($download_dir)) mkdir($download_dir, 0777, true); 
                            59.  
                            60. $tmp_dir = $download_dir.time().rand(100, 999).DIRECTORY_SEPARATOR; // 文件临时存放目录 
                            61.  
                            62.  
                            63.  
                            64. $downloader = new fileDownloader(); 
                            65.  
                            66.  
                            67.  
                            68. if($file_url_arr && !emptyempty($file_url_arr)) $downloader->download($tmp_dir$file_url_arr); // 下载文件 
                            69.  
                            70.  
                            71.  
                            72. $file_lists = scandir($tmp_dir); 
                            73.  
                            74. $file_lists = array_diff($file_lists, ['.''..']); 
                            75.  
                            76. $file_lists = array_values($file_lists); // 重置索引 
                            77.  
                            78. if(emptyempty($file_lists)){ 
                            79.  
                            80.     $output = array
                            81.  
                            82.         'status' => 2, 
                            83.  
                            84.         'code' => 999, 
                            85.  
                            86.         'error' => '无下载文件'
                            87.  
                            88.     ); 
                            89.  
                            90.     exit(json_encode($output)); 
                            91.  
                            92.  
                            93.  
                            94.  
                            95. //if (count($file_lists) > 1) { // 如果是多个文件就压缩 
                            96.  
                            97. //    $file_name = $downloader->compress($tmp_dir, $subject_title); 
                            98.  
                            99. //} else { 
                            100.  
                            101.     $file_name = $file_lists[0]; // 如果是单个文件就直接输出 
                            102.  
                            103. //} 
                            104.  
                            105.  
                            106.  
                            107. $file_headers = get_headers($file_urls, 1); 
                            108.  
                            109. header("Cache-Control: public"); 
                            110.  
                            111. header("Content-Description: File Transfer"); 
                            112.  
                            113. //header('Content-disposition: attachment; filename='.basename($file_name)); //文件名 
                            114.  
                            115. header('Content-Type: '.$file_headers['Content-Type']); //zip 
                            116.  
                            117. header("Content-Transfer-Encoding: binary"); //二进制文件 
                            118.  
                            119. header('Content-Length: 'filesize($tmp_dir.$file_name)); //文件大小 
                            120.  
                            121.  
                            122.  
                            123. $user_agent = $_SERVER["HTTP_USER_AGENT"]; 
                            124.  
                            125. $encoded_name = rawurlencode($file_name); 
                            126.  
                            127. if (preg_match("/Firefox/"$user_agent)) { //火狐浏览器 
                            128.  
                            129.     header('Content-Disposition: attachment; filename*=utf-8\'\''.$encoded_name); 
                            130.  
                            131. else { // IE, 谷歌浏览器 
                            132.  
                            133.     header('Content-Disposition: attachment; filename="' . $file_name . '"'); 
                            134.  
                            135.  
                            136. ob_clean(); 
                            137.  
                            138. flush(); 
                            139.  
                            140. @readfile($tmp_dir.$file_name); 
                            141.  
                            142. $downloader->deleteDir($tmp_dir); 
                            143.  
                            144.  
                            145.  
                            146. //文件下载类 
                            147.  
                            148. class fileDownloader{ 
                            149.  
                            150.  
                            151.  
                            152.     // 下载文件 
                            153.  
                            154.     // $dir 文件存放地址,绝对路径 
                            155.  
                            156.     // $urls 文件下载地址 
                            157.  
                            158.     public function download($dir$urls = array()){ 
                            159.  
                            160.         if (!file_exists($dir)) { 
                            161.  
                            162.             mkdir($dir, 0777, true); 
                            163.  
                            164.         } 
                            165.  
                            166.         if (emptyempty($urls)) { 
                            167.  
                            168.             return
                            169.  
                            170.         } 
                            171.  
                            172.  
                            173.  
                            174.         foreach ($urls as $val) { 
                            175.  
                            176.             $file_name_arr = explode('/'$val); // 使用 / 分隔url 
                            177.  
                            178.             $file_name = array_pop($file_name_arr); // 弹出数组的最后一个元素,作为文件名 
                            179.  
                            180.  
                            181.  
                            182.             // 如果以linux作为主机,需要将utf文件名转换成GBK文件名 
                            183.  
                            184. //                if (PHP_OS != 'WINNT') { 
                            185.  
                            186. //                    $file_name = mb_convert_encoding($file_name, 'gbk', 'utf-8'); // 把文件名从utf-8转换为gbk 
                            187.  
                            188. //                } 
                            189.  
                            190. //            $file_name = mb_convert_encoding($file_name, 'gbk', 'utf-8'); // 把文件名从utf-8转换为gbk 
                            191.  
                            192.  
                            193.  
                            194.             // 下载文件 
                            195.  
                            196.             $ch = curl_init(); 
                            197.  
                            198.             curl_setopt($ch,CURLOPT_URL,$val); 
                            199.  
                            200.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
                            201.  
                            202.             curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); 
                            203.  
                            204.             $data = curl_exec($ch); 
                            205.  
                            206.             error_log(var_export(curl_getinfo($ch), 1)); 
                            207.  
                            208.             curl_close($ch); 
                            209.  
                            210.             if ($data) { 
                            211.  
                            212.                 // 保存文件 
                            213.  
                            214.                 file_put_contents($dir.$file_name$data); 
                            215.  
                            216.             } 
                            217.  
                            218.         } 
                            219.  
                            220.     } 
                            221.  
                            222.  
                            223.  
                            224.     // 压缩文件 
                            225.  
                            226.     // $dir 扫描目录 
                            227.  
                            228.     // $filename 压缩文件名 
                            229.  
                            230.     public function compress($dir$filename = false){ 
                            231.  
                            232.         if (!file_exists($dir)) { 
                            233.  
                            234.             return false; 
                            235.  
                            236.         } 
                            237.  
                            238.  
                            239.  
                            240.         $file_lists = scandir($dir); // 扫描文件夹 
                            241.  
                            242.         $file_lists = array_diff($file_lists, ['.''..']); //去除上级目录和当前目录 
                            243.  
                            244.         if (emptyempty($file_lists)) { 
                            245.  
                            246.             return false; 
                            247.  
                            248.         } 
                            249.  
                            250.  
                            251.  
                            252.         if (!$filename) { 
                            253.  
                            254.             $filename = time().rand(111, 999).'.zip'
                            255.  
                            256.         } else { 
                            257.  
                            258.             $filename .= '.zip'
                            259.  
                            260.         } 
                            261.  
                            262.  
                            263.  
                            264.         $fullname = $dir.$filename// 带路径的压缩文件名 
                            265.  
                            266.         if (!file_exists($fullname)) { 
                            267.  
                            268.             $zip = new ZipArchive(); 
                            269.  
                            270.             if ($zip->open($fullname, ZipArchive::CREATE)==TRUE) { 
                            271.  
                            272.                 foreach($file_lists as $val){ 
                            273.  
                            274.                     if(file_exists($dir.$val)){ 
                            275.  
                            276.                         $zip->addFile($dir.$val$val); 
                            277.  
                            278.                     } 
                            279.  
                            280.                 } 
                            281.  
                            282.                 $zip->close(); 
                            283.  
                            284.             } 
                            285.  
                            286.         } 
                            287.  
                            288.         return $filename
                            289.  
                            290.     } 
                            291.  
                            292.  
                            293.  
                            294.     // 递归删除文件和文件夹 
                            295.  
                            296.     // $path 要删除的文件路径 
                            297.  
                            298.     public function deleteDir($path
                            299.  
                            300.     { 
                            301.  
                            302.         //如果是目录则继续 
                            303.  
                            304.         if (is_dir($path)) { 
                            305.  
                            306.             $file_lists = scandir($path);//扫描一个文件夹内的所有文件夹和文件并返回数组 
                            307.  
                            308.             foreach ($file_lists as $val) {//排除目录中的.和.. 
                            309.  
                            310.                 if ($val != "." && $val != "..") {//如果是目录则递归子目录,继续操作 
                            311.  
                            312.                     if (is_dir($path . $val)) {//子目录中操作删除文件夹和文件 
                            313.  
                            314.                         self::deleteDir($path . $val . '/');//目录清空后删除空文件夹 
                            315.  
                            316.                         @rmdir($path . $val . '/'); 
                            317.  
                            318.                     } else {//如果是文件直接删除 
                            319.  
                            320.                         unlink($path . $val); 
                            321.  
                            322.                     } 
                            323.  
                            324.                 } 
                            325.  
                            326.             } 
                            327.  
                            328.             @rmdir($path); 
                            329.  
                            330.         } 
                            331.  
                            332.     } 
                            333.  

                            YISHANGJIUSHIphpXIAZAIYUANCHENGWENJIANDEYUANMAJIESHAODEXIANGXINEIRONG。

                            Tags: php下载远程文件

                            分享到:

                            靠谱的棋牌---首页_Welcome 蓝洞棋牌官网送3金币---首页_Welcome 百灵拼三张-Welcome 聚友棋牌官网下载安装-首页 百胜棋牌---首页_欢迎您