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;
}
}