查看: 709|回复: 0

php后台升级远程下载文件的原理

[复制链接]

748

主题

39

回帖

3907

积分

管理员

总舵主

积分
3907
QQ
发表于 2024-5-25 19:55:22 | 显示全部楼层 |阅读模式
  1. /**
  2. * PHP下载远程文件到本地原理:通过PHP函数,先读取远程文件,然后在本地创建一个新的空文件,
  3. * 然后将已读取的远程文件的内容写入到新创建的文件当中,这样就可以达到远程文件下载功能
  4. * @author JackyLi
  5. *
  6. */  
  7. class DownloadFile {  
  8.     /**
  9.      * @param string $file  远程需要下载的文件
  10.      */  
  11.     public static function get_img_file($file) {  
  12.         $targetDir = sys_get_temp_dir () . DIRECTORY_SEPARATOR . "plupload" . DIRECTORY_SEPARATOR;  
  13.         if (! file_exists ( $targetDir )) { //检测临时下载目录是否存在,不存在,则新建一个  
  14.             @mkdir ( $targetDir );  
  15.         }  
  16.         if (! $file) {  
  17.             return false;  
  18.         }  
  19.         $ext = strrchr ( $file, "." ); //取扩展名  
  20.         $filename = $targetDir . '/' . basename ( $file, $ext ) . date ( "YmdHis" ) . $ext; //需要保存的文件名称(带完整路径)  
  21.         ob_start (); //开启output buffering  
  22.         readfile ( $file ); //将文件读取buffering中  
  23.         $img = ob_get_contents (); //将buffering中的数据保存到变量当中,方便后续操作  
  24.         ob_end_clean (); //关闭output buffering  
  25.         $fp2 = @fopen ( $filename, "a" ); //打开目标文件(马上被写入数据的文件)  
  26.         fwrite ( $fp2, $img ); //写入数据到文件当中  
  27.         fclose ( $fp2 ); //关闭文件句柄  
  28.         //上面读取文件内容,可以直接用下面两行代替  
  29.         //        $file = file_get_contents($file);   
  30.         //        file_put_contents($filename,$file);      
  31.         return true;  
  32.     }  
  33. }  
  34.   
  35. $download = new DownloadFile ();  
  36. $download->get_img_file ( 'http://news.sina.com.cn/c/2011-09-16/021323162600.shtml' );
复制代码
这是一个案例,举一反三,自己考虑,也可以下方留言讨论。
道不同,不相为谋!理想要有,万一实现了呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:2513533699@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鲁ICP备19000917号|鲁公网安备37078302000320号

在本版发帖
关注公众号
QQ客服返回顶部