php接口下载图片,PHP 通过url下载图片接口

这篇博客详细介绍了如何使用PHP实现从远程URL下载图片并保存到本地服务器的功能。通过设置HTTP头部信息,允许跨域请求,并检查图片格式,确保安全下载。文章还提供了一个名为getImage的函数,该函数接收图片URL、保存目录、文件名和下载方式作为参数,实现了下载和保存过程。在下载过程中,如果目录不存在,会尝试创建,同时检查目录权限。最后,将下载的图片链接返回。
摘要由CSDN通过智能技术生成

//设置数据格式-- json

header('content-type:application/json;charset=utf-8');

// *代表允许任何网址请求

header('Access-Control-Allow-Origin:*');

// 允许请求的类型

header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');

// 设置允许任何请求头的字段

header('Access-Control-Allow-Headers:*');

//屏蔽参数为空警告

error_reporting(0);

$url = isset($_POST['url']) ? $_POST['url'] : ''; //图片下载url

if ($url == '') {

$res = array('code' => '0', 'msg' => '参数错误');

exit(json_encode($res));

} else {

getImage($url, $save_dir = '../assets/img', $filename = '', $type = 0);

}

/*

*功能:php完美实现下载远程图片保存到本地

*参数:文件url,保存文件目录,保存文件名称,使用的下载方式

*当保存文件名称为空时则使用远程文件原来的名称

*/

function getImage($url, $save_dir, $filename, $type = 0)

{

if (trim($save_dir) == '') {

$save_dir = './';

}

if (trim($filename) == '') { //保存文件名

$ext = strrchr($url, '.');

if ($ext != '.gif' && $ext != '.jpg' && $ext != '.jpge' && $ext != '.png') {

$res = array('code' => '0', 'msg' => '格式错误');

exit(json_encode($res));

}

$filename = time() . $ext;

}

if (0 !== strrpos($save_dir, '/')) {

$save_dir .= '/';

}

//创建保存目录

if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {

$res = array('code' => '0', 'msg' => '目录权限错误');

exit(json_encode($res));

}

//获取远程文件所采用的方法

if ($type) {

$ch = curl_init();

$timeout = 5;

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$img = curl_exec($ch);

curl_close($ch);

} else {

ob_start();

readfile($url);

$img = ob_get_contents();

ob_end_clean();

}

//$size=strlen($img);

//文件大小

$fp2 = @fopen($save_dir . $filename, 'a');

fwrite($fp2, $img);

fclose($fp2);

unset($img, $url);

$res = array('link' => 'http://localhost/api/assets/img/' . $filename);

exit(json_encode($res));

}

作者:amao

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值