PHP遠端下載檔案原理

y0umer發表於2012-11-29

php通過http、ftp等方式訪問遠端伺服器,下載檔案

轉自:http://blog.csdn.net/ltx851201/article/details/6782042  在路上blog

/**
 * PHP下載遠端檔案到本地原理:通過PHP函式,先讀取遠端檔案,然後在本地建立一個新的空檔案,
 * 然後將已讀取的遠端檔案的內容寫入到新建立的檔案當中,這樣就可以達到遠端檔案下載功能
 * @author JackyLi
 *
 */
class DownloadFile {
	/**
	 * @param string $file  遠端需要下載的檔案
	 */
	public static function get_img_file($file) {
		$targetDir = sys_get_temp_dir () . DIRECTORY_SEPARATOR . "plupload" . DIRECTORY_SEPARATOR;
		if (! file_exists ( $targetDir )) { //檢測臨時下載目錄是否存在,不存在,則新建一個
			@mkdir ( $targetDir );
		}
		if (! $file) {
			return false;
		}
		$ext = strrchr ( $file, "." ); //取副檔名
		$filename = $targetDir . `/` . basename ( $file, $ext ) . date ( "YmdHis" ) . $ext; //需要儲存的檔名稱(帶完整路徑)
		ob_start (); //開啟output buffering
		readfile ( $file ); //將檔案讀取buffering中
		$img = ob_get_contents (); //將buffering中的資料儲存到變數當中,方便後續操作
		ob_end_clean (); //關閉output buffering
		$fp2 = @fopen ( $filename, "a" ); //開啟目標檔案(馬上被寫入資料的檔案)
		fwrite ( $fp2, $img ); //寫入資料到檔案當中
		fclose ( $fp2 ); //關閉檔案控制程式碼
		//上面讀取檔案內容,可以直接用下面兩行代替
		//		  $file = file_get_contents($file);	
		//		  file_put_contents($filename,$file);	  
		return true;
	}
}

$download = new DownloadFile ();
$download->get_img_file ( `http://news.sina.com.cn/c/2011-09-16/021323162600.shtml` );


相關文章