php實現遠程網絡文件下載到服務器指定目錄(方法一)

PHP實現遠程網絡文件下載到服務器指定目錄(方法一)

<?php  
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  
    );  
}  
//$url = "http://www.baidu.com/img/baidu_jgylogo3.gif";  
//$url="http://192.168.1.212/aaa.doc";  
$url="http://192.168.31.1/".urlencode(iconv("GB2312","UTF-8","測試.doc"));  
$save_dir = "down/";  
//$filename = "baidu_jgylog1o31.gif";  
$filename ="學習1.doc";  
$res = getFile($url, $save_dir, $filename,1);//0  1 都是好使的  
var_dump($res);  
 
備註說明:

如果遠程文件的命名是英文的話可以直接下載就可以了,如果遠程文件名是中文的,必須轉換成utf-8的編碼格式,然後再urlencode轉換成url加密的格式,

php的代碼程序的編碼是gb2312。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章