博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP实现远程下载文件到本地
阅读量:7240 次
发布时间:2019-06-29

本文共 1876 字,大约阅读时间需要 6 分钟。

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
echo
httpcopy(
""
);
  
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);
}
?>

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

你可能感兴趣的文章
android-4.2.1_r1 Porting PPPoE
查看>>
Spring的IoC与AOP的理解
查看>>
作为老大
查看>>
分页——为Mybatis配置PageHelper
查看>>
中移动推出免费网络电话 迟到的微信对手
查看>>
CODEVS 1047 邮票面值设计
查看>>
谈工程师的价值和发展
查看>>
1、查找字符位置函数
查看>>
去掉标题栏/ActionBar后点击menu键时应用崩溃
查看>>
求1+2+3+...+n
查看>>
bzoj 1854: [Scoi2010]游戏
查看>>
bzoj 1432: [ZJOI2009]Function
查看>>
HashMap泛型使用
查看>>
MTK Sensor越界导致的系统重启问题分析报告
查看>>
Swift-JSON Encode && Decode
查看>>
(效果五)js获取客户端ip地址及浏览器信息
查看>>
XAML中的空格、换行、Tab
查看>>
Python解析XML
查看>>
第43条:返回零长度的数组或者集合,而不是null
查看>>
初识numpy的多维数组对象ndarray
查看>>