php实现远程下载文件到本地服务器指定目录

时间: 2023-07-10 admin IT培训

php实现远程下载文件到本地服务器指定目录

php实现远程下载文件到本地服务器指定目录

<?php  
//页面编码要用gb2312
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://127.0.0.1/".urlencode(iconv("GB2312","UTF-8","测试.docx"));  
$save_dir = "down/";  $filename ="学习.docx";  //名称会改变
$res = getFile($url, $save_dir, $filename,1);//0  1 都是好使的  
var_dump($res);  
/*
备注说明: 
如果远程文件的命名是英文的话可以直接下载就可以了,如果远程文件名是中文的,必须转换成utf-8的编码格式,然后再urlencode转换成url加密的格式,
php的代码程序的编码是gb2312。*/
?>