PHP实现远程下载文件到本地

简介: PHP实现远程下载文件到本地 投稿:hebedich 字体:[增加 减小] 类型:转载   经常写采集器发布接口需要使用到远程附件的功能,所以自己写了一个PHP远程下载文件到本地的函数,一般情况下已经够用了,如果服务器支持CURL函数,程序则会优先选择CURL,有需要的小伙伴可以参考下。

PHP实现远程下载文件到本地

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

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

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

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

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

以上所述就是本文的全部内容了,希望大家能够喜欢。

目录
相关文章
|
1月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
30 0
thinkphp5.1隐藏index.php入口文件
|
13天前
|
PHP
php下载MP4视频
php下载MP4视频
9 0
|
3月前
|
PHP 数据安全/隐私保护
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)