前段时间不是发布了一个关于api接口代码的文章吗?其中有一个接口代码是调用本地图片文件的,但是我发现那个代码无法使用json回调,现在更新一下代码。上面截图这个就是上次发布的本地调用代码。
它只能直接回调图片,无论你填写什么格式都是直接返回图片的,无法使用json回调图片地址。
发现的有点晚了,因为我也没用到需要回调图片链接的地方,最近写小程序调用api的时候才发现有问题。
下面更新一下接口代码,完美实现接口返回图片和返回图片链接的两个调用方式。
<?php
// 存放图片的文件夹名
$folder = "ecy";
if(!is_dir($folder)){
die('文件夹不存在');
}
// 从文件夹读取图片
$pics = [];
$dirHandle = opendir($folder);
if (!$dirHandle) {
die('无法访问图片文件夹,请检查权限');
}
$supportFormats = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
while(($file = readdir($dirHandle)) !== false){
if ($file == '.' || $file == '..') {
continue;
}
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
if (in_array($ext, $supportFormats)) {
$pics[] = rtrim($folder, '/') . '/' . $file; // 相对路径
}
}
closedir($dirHandle);
if(empty($pics)){
die('文件夹中无有效图片');
}
// 协议直接固定为https://,不自动识别
$randomRelativePath = $pics[array_rand($pics)];
$protocol = 'https'; // 强制使用HTTPS协议,不用HTTPS可以自行修改
$domain = $_SERVER['HTTP_HOST']; // 仍自动识别你的域名/IP
$pic = "{$protocol}://{$domain}/{$randomRelativePath}"; // 拼接HTTPS完整链接
// 返回图片格式
$type=$_GET['type'];
switch($type){
case 'json':
header('Content-type:text/json');
die(json_encode(['image'=>$pic])); // pic是返回的图片链接,如 https://你的域名/ecy/xyttkx.png
default:
die(header("Location: $pic"));
}
代码给你们带上了注解,ecy那里就是文件夹名字,名字可以自行更改,需要调用的图片放在哪个文件夹里面就用哪个文件夹的图名字。
调用image格式是直接返回图片。
调用json格式会自动识别你的域名和图片路径以及名字,从而拼接成完整的图片返回。
注意,我代码里写的是强制使用HTTPS,如果你的域名没有ssl,你可以自己修改一下代码。
用我的接口给你们测试一下新代码
这是api调用本地图片的代码更新,调用txt文件图片链接的那个api接口代码没问题,自适应接口代码也可以正常使用,我就不发第二次了,感兴趣的也可以去看看: 点击打开文章
评论 (0)