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等文件到本地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!