php用curl远程下载图片(php curl 下载文件)

发布时间:2022-11-08

本文目录一览:

  1. php curl get 下载远程zip文件保存在本地例子
  2. php 用CURL 抓取图片
  3. PHP CURL 下载多图。部分图片没下载
  4. PHP CURL 获取远程数据下载

php curl get 下载远程zip文件保存在本地例子

<?php
if($_POST['submit']){
    $url = $_POST['url']; // 取得提交过来的地址
    $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 charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>远程下载文件</title>
</head>
<body>
    <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>

php 用CURL 抓取图片

preg_match('@p\.php\?p=(.*)@Ui', $url, $url); // 获取图片地址
if(isset($url[1]))
    $url = $url[1];
else
    $url = '';
if($url):
    // curl抓取图片过程
    $ch = curl_init();
    if (defined('CURLOPT_IPRESOLVE') || defined('CURL_IPRESOLVE_V4')) {
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $content = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    if ($info['http_code'] != 200)
        $content = NULL;
    if($content) // 保存图片到本地
        @file_put_contents('存放地址', $content);
endif;

PHP CURL 下载多图。部分图片没下载

set_time_limit(0)

程序最上面加,表示程序运行时间无限。 其实程序中还应该判断一下是否有这个图片。

PHP CURL 获取远程数据下载

这样做肯定是用的你的带宽,是把文件下载到你的服务器上,然后再下载给客户端。 有两条路你可以去试试看,我没做过:

  1. 一是 setcookie 指定域名是那个网站,然后转向:
setcookie($cname, $cvalue, $expire, $path, $host);
header('location: ' . $url);
  1. 另外一个方法类似,好像有个 P3P 可以传递 COOKIE,需要你自己查资料:
setcookie($cname, $cvalue);
header('P3P: ....');
header('location: ' . $url);

第二个办法应该是可以的,陶宝和开心网都在用这样的技术,陶宝有许多域名,一次登录后都可以使用,就是利用 P3P 实现的 COOKIE 传递。