php 下载资源文件到本地

本文介绍了一种使用PHP的CurlRequest类从远程URL下载资源到本地的方法,包括post和get请求示例,适用于图片和其他文件的下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php 将一个资源链接下载到本地的方法.仅供参考

$source_url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1533882435&di=cbc2afab71336aec9f5d7f6edb133f25&imgtype=jpg&er=1&src=http%3A%2F%2Ftxt22263.book118.com%2F2017%2F0509%2Fbook105460%2F105459445.jpg";
$curl = new \App\Tools\CurlRequest();
$s = $curl->get($source_url);
$r = file_put_contents("./exports/s.jpg",$s);
dd($r);

 附上 php curl 函数 post/get 方法

<?php
/**
 * Created by PhpStorm.
 * User: nwei
 * Date: 2017/12/6
 * Time: 9:31
 */

namespace App\Tools;


class CurlRequest
{
    public function get($url, $header=null) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FAILONERROR, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER  ,0);
        //https 请求
        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }
        //header.
        if($header){

            curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
        }

        $reponse = curl_exec($ch);
        curl_close($ch);
        return $reponse;
    }

    public function post($url, $postFields=null, $header=null){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FAILONERROR, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER  ,0);
        //https 请求
        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }

        if (is_array($postFields) && 0 < count($postFields))
        {
            $postBodyString = "";
            $postMultipart = false;
            foreach ($postFields as $k => $v)
            {
                if("@" != substr($v, 0, 1))
                {
                    $postBodyString .= "$k=" . urlencode($v) . "&";
                }
                else
                {
                    $postMultipart = true;
                }
            }
            unset($k, $v);
            curl_setopt($ch, CURLOPT_POST, true);
            $postMultipart = true;
            if ($postMultipart)
            {
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
            }
            else
            {
                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
            }

            //header.
            if($header){

                curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
            }

        }
        $reponse = curl_exec($ch);
        if (curl_errno($ch)) {
            print curl_error($ch);
        }
        curl_close($ch);
        return $reponse;
    }



    public function post_json($url, $jsonFields=null){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_FAILONERROR, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER  ,array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($jsonFields)
        ));
        //https 请求
        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }

        curl_setopt($ch, CURLOPT_POSTFIELDS,$jsonFields);
        $reponse = curl_exec($ch);

        if (curl_errno($ch)) {
            print curl_error($ch);
        }
        curl_close($ch);
        return $reponse;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值