php 根据URL下载远程图片、压缩包、pdf等文件到本地
1、此方法可以下载图片、压缩包、pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下
//远程路径,名称,文件后缀
functiondownImgRar($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、下载压缩文件,这个只可以下载压缩文件
//下载压缩包
functiondownRar($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+")ordie('打开文件错误');//下载文件必须要将文件先打开。写入内存
$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等文件到本地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!