1、此方法可以下载图片、压缩包、pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下
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
|
//远程路径,名称,文件后缀
function downImgRar( $url , $rename , $ext ){
switch ( $ext ) {
case 'jpg' : //下载图片
$file_path = 'uploads/images/' ;
break ;
case 'png' : //下载图片
$file_path = 'uploads/images/' ;
break ;
case 'pdf' : //下载PDF
$file_path = 'uploads/pdf/' ;
break ;
case 'rar' : //下载压缩包
$file_path = 'uploads/rar/' ;
break ;
case 'zip' : //下载压缩包
$file_path = 'uploads/rar/' ;
break ;
default :
$file_path = 'uploads/files/' ;
break ;
}
$ch = curl_init( $url );
curl_setopt( $ch , CURLOPT_HEADER, 0);
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch , CURLOPT_BINARYTRANSFER,1);
$rawdata =curl_exec ( $ch );
curl_close ( $ch );
// 使用中文文件名需要转码
$fp = fopen ( $file_path .iconv( 'UTF-8' , 'GBK' , $rename ). "." . $ext , 'w' );
fwrite( $fp , $rawdata );
fclose( $fp );
// 返回路径
return $_SERVER [ 'DOCUMENT_ROOT' ]. $file_path . $rename . "." . $ext ;
}
|
2、下载压缩文件,这个只可以下载压缩文件
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
|
// 下载压缩包
function downRar( $file_path )
{
$file_name = '/uploads/rar/2009323162920-维C银翘片说明书.rar' ;
$file_name = iconv( "utf-8" , "gbk//IGNORE" , $file_name ); // 特别注意!特别注意!特别注意这里,windows下必须开转码,不然直接文件不存
$file_path = $_SERVER [ 'DOCUMENT_ROOT' ] . $file_name ; // 比如windows下这里我的是 "D:/web/public/uploads/rar/2009323162920-维C银翘片说明书.rar"
//判断如果文件存在,则跳转到下载路径
if (! file_exists ( $file_path )) {
die ( "文件不存在!" );
}
$fp = fopen ( $file_path , "r+" ) or die ( '打开文件错误' ); //下载文件必须要将文件先打开。写入内存
$file_size = filesize ( $file_path );
//返回的文件流
Header( "Content-type:application/octet-stream" );
//按照字节格式返回
Header( "Accept-Ranges:bytes" );
//返回文件大小
Header( "Accept-Length:" . $file_size );
//弹出客户端对话框,对应的文件名
Header( "Content-Disposition:attachment;filename=" . substr ( $file_name , strrpos ( $file_name , '/' ) + 1));
//防止服务器瞬间压力增大,分段读取
$buffer = 1024;
while (! feof ( $fp )) {
$file_data = fread ( $fp , $buffer );
echo $file_data ;
}
fclose( $fp );
die ( "下载成功!" );
}
|
总结
以上所述是小编给大家介绍的php 根据URL下载远程图片、压缩包、pdf等文件到本地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
原文链接:https://www.cnblogs.com/zxf100/archive/2019/07/26/11250101.html