php curl get 下载远程zip文件保存在本地例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php curl get 下载远程zip文件保存在本地例子相关的知识,希望对你有一定的参考价值。
目前只知道用php 下载图片,但是对于6M这样大小的zip文件就不知道怎么下载了,用相同的代码似乎会下载不全,新学PHP编程,请大家指教!
<?phpif($_POST['submit'])
$url=$_POST['url']; //取得提交过来的地址http://hu60.cn/wap/0wap/addown.php/fetion_sms.zip
$url=urldecode($url);
$fname=basename("$url"); //返回路径中的文件名部分 fetion_sms.zip
$str_name=pathinfo($fname); //以数组的形式返回文件路径的信息
$extname=strtolower($str_name['extension']); //把扩展名转换成小写
//$uptypes=explode(",",$forum_upload); //取得可以上传的文件格式
//$size=getFileSize($url);
$time=date("Ymd",time());
$upload_dir="./upload/";//上传的路径
$file_name=$time.rand(1000,9999).'.'.$fname;
$dir=$upload_dir.$file_name;//创建上传目录
//判断目录是否存在 不存在则创建
if(!file_exists($upload_dir))
mkdir($upload_dir,0777,true);
$contents=curl_download($url,$dir);
if($contents)
echo "下载成功";
else
echo "下载失败";
function curl_download($url, $dir)
$ch = curl_init($url);
$fp = fopen($dir, "wb");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
$res=curl_exec($ch);
curl_close($ch);
fclose($fp);
return $res;
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>远程下载文件</title>
<form name="upform" method="post" action="" enctype='multipart/form-data'>
<input name='url' type='text' size='20'/>
<input type='submit' name='submit' value='远程下载'/>
</form>
</body>
</html>追问
运行之后没有显示下载成功或失败,应该是没运行成功吧,不知道哪里出了问题。
追答你看有文件下载成功没。
追问也没有找到文件。
追答curl扩展 开了没? 我这里可以的哦。
追问开了,我另在网上找到了一段PHP代码下成功了你给的链接,你给的代码我真的没能下到文件。。。不过你给的解析很清晰,我能看懂。谢谢!
参考技术A 可以调用系统的下载命令:wgetexec()追问
我是Mac电脑Unix系统,没有wget命令,用curl应该也可以下,在命令行可以运行,但是不知道怎么写成PHP程序。。。
追答$cmd = 'curl "http://url.com/xxx"';//这里完全是系统命令exec($cmd, $output, $return);// $output参数是接受执行完系统命令的返回值。$return是执行状态
if($return == 0)
var_dump($output[0]);
else
// error
追问
这样运行似乎效率很低,感觉就是在用命令行执行了。我想用的是curl_exec(),现在找到可运行的代码执行下载了,谢谢!
参考技术B 获得图片路径之后,直接根据路径写下载方法就行了如何使用 PHP 下载 .zip 文件
【中文标题】如何使用 PHP 下载 .zip 文件【英文标题】:How to download .zip file using PHP 【发布时间】:2017-10-20 08:24:00 【问题描述】:我的网站在http://domain1.com
,我想从另一个域http://domain2.com/uploads/data.zip
下载一些.zip
文件,但没有下载并显示302 移动临时错误。我正在使用 cURL 代码。
header('Access-Control-Allow-Origin: http://www.domain2.com');
header('Content-Length: '.filesize($response));
header('Content-Type: application/zip');
header('Content-Transfer-Encoding: Binary');
header("Content-Disposition: attachment; filename=my.zip");
//readfile($response);
header("Location:$response");
【问题讨论】:
卷曲代码在哪里?? Is there a way to follow redirects with command line cURL的可能重复 【参考方案1】:只需在项目根目录创建一个 php 文件。比如“test.php”
现在在“test.php”文件中添加以下代码。
file_put_contents("zipname.zip", fopen("http://domain2.com/uploads/data.zip", 'r'));
这是使用 php 下载文件的最快、最简单的方法。
更多详情见下文
https://thecodingstuff.com/php-download-archive-file-from-url/
【讨论】:
以上是关于php curl get 下载远程zip文件保存在本地例子的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中从 cURL GET 请求保存 .zip 文件