使用場景: 經過給到的url下載附件到本機服務器指定目錄php
php實現遠程網絡文件下載到服務器指定目錄服務器
備註說明: 若是遠程文件的命名是英文的話能夠直接下載就能夠了,若是遠程文件名是中文的,必須轉換成utf-8的編碼格式,而後再urlencode轉換成url加密的格式, php的代碼程序的編碼是gb2312。網絡
<?php public function index(){ $url="http://localhost:86/bocdemo2.1/out/upload/".urlencode(iconv("GB2312","UTF-8","8858dd61208b436a3b34bb81c3363443.jpg")); $save_dir = "E:/AppServ/www/bocdemo2.1/out/upload/2017/09/13"; $filename ="8858dd61208b436a3b34bb81c3363443.jpg"; $res = $this->getFile($url, $save_dir, $filename,1);//0 1 都是好使的 var_dump($res); } 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); $content = curl_exec($ch); curl_close($ch); } else { ob_start(); readfile($url); $content = ob_get_contents(); ob_end_clean(); } //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 ); } ?>
來源:http://blog.csdn.net/hai7425/article/details/52868788curl