VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP实现远程下载文件到本地

经常写采集器发布接口需要使用到远程附件的功能,所以自己写了一个PHP远程下载文件到本地的函数,一般情况下已经够用了,如果服务器支持CURL函数,程序则会优先选择CURL,有需要的小伙伴可以参考下。

代码很简单就不多废话了,直接奉上:

  1. <?php 
  2. echo httpcopy("http://www.baidu.com/img/baidu_sylogo1.gif"); 
  3.    
  4. function httpcopy($url$file=""$timeout=60) { 
  5.   $file = emptyempty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file
  6.   $dir = pathinfo($file,PATHINFO_DIRNAME); 
  7.   !is_dir($dir) && @mkdir($dir,0755,true); 
  8.   $url = str_replace(" ","%20",$url); 
  9.    
  10.   if(function_exists('curl_init')) { 
  11.     $ch = curl_init(); 
  12.     curl_setopt($ch, CURLOPT_URL, $url); 
  13.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
  14.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
  15.     $temp = curl_exec($ch); 
  16.     if(@file_put_contents($file$temp) && !curl_error($ch)) { 
  17.       return $file
  18.     } else { 
  19.       return false; 
  20.     } 
  21.   } else { 
  22.     $opts = array
  23.       "http"=>array
  24.       "method"=>"GET"
  25.       "header"=>""
  26.       "timeout"=>$timeout
  27.     ); 
  28.     $context = stream_context_create($opts); 
  29.     if(@copy($url$file$context)) { 
  30.       //$http_response_header 
  31.       return $file
  32.     } else { 
  33.       return false; 
  34.     } 
  35.   } 
  36. ?> 

再来个远程下载文件到服务器

  1. <form method="post"
  2. <input name="url" size="50" /> 
  3. <input name="submit" type="submit" /> 
  4. </form> 
  5. < ?php 
  6. // maximum execution time in seconds 
  7. set_time_limit (24 * 60 * 60); 
  8. if (!isset($_POST['submit'])) die(); 
  9. // folder to save downloaded files to. must end with slash 
  10. $destination_folder = 'temp/'
  11.    
  12. $url = $_POST['url']; 
  13. $newfname = $destination_folder . basename($url); 
  14. $file = fopen ($url"rb"); 
  15. if ($file) { 
  16. $newf = fopen ($newfname"wb"); 
  17. if ($newf
  18. while(!feof($file)) { 
  19. fwrite($newffread($file, 1024 * 8 ), 1024 * 8 ); 
  20. if ($file) { 
  21. fclose($file); 
  22. if ($newf) { 
  23. fclose($newf); 
  24. ?>
  25.  

出处:http://www.phpfensi.com/php/20210527/15877.html


相关教程