前段时间,在群里看到有不少人想给
maccms v10
采集的视频图片上传到自己的图床或着公共图床。
然后没事,我就研究了一下。
其实不难,稍微懂点thinkphp5.0就ok了。
主要就是两个文件,一个php文件,一个html文件
Wjssk.php内容
namespace app\common\extend\upload;
// 注意点 class后面的内容要和文件一直,注意首字母大写
class Wjssk{
public $name = 'WJSSK公共图床';
public function submit($filePath){
// 其实你们要是自己用,都不用搞这样,可以
// $api = "http://domain/upload";直接写你的图片上传地址,或着图床api地址
// 这里主要是获取从后台设定的地址
$api = $GLOBALS['config']['upload']['api']['wjssk']['api'];
// 文件上传名称,由于不同的api接口对应上传的文件字段名不一样,所以这里也自定义一下
$field = $GLOBALS['config']['upload']['api']['wjssk']['field'];
// 上传成功后返回图片地址的json路径
$reback = $GLOBALS['config']['upload']['api']['wjssk']['reback'];
// 下面就是常规的php curl 文件上传
if (class_exists('CURLFile')) { // php 5.5
$post[$field] = new \CURLFile(realpath($filePath));
} else {
$post[$field] = '@' . realpath($filePath);
}
// 创建一个新 cURL 资源
$curl = curl_init();
// 设置URL和相应的选项
// 需要获取的 URL 地址
curl_setopt($curl, CURLOPT_URL, $api);
#启用时会将头文件的信息作为数据流输出。
curl_setopt($curl, CURLOPT_HEADER, false);
#在尝试连接时等待的秒数。设置为 0,则无限等待。
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
#允许 cURL 函数执行的最长秒数。
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
#设置请求信息
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
#关闭ssl
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
#TRUE 将 curl_exec获取的信息以字符串返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 抓取 URL 并把它传递给浏览器
$return = curl_exec($curl);
curl_close($curl);
//删除本地图片
unlink($filePath);
$return = json_decode($return, true);
// 知道路径的话可以直接返回
// return $return['data']['url'];
$reback = explode('||',$reback);
$res = $return;
// 例如返回的json:{"code":1,"data":{"src":"imgsrc.jpg"}}
// 那么 $reback就等于 data||src
foreach($reback as $r){
$res = $res[trim($r)];
}
return $res;
// 最终只需要返回图片的地址就行。
}
}
{/tabs-pane}
{tabs-pane label="html文件"}
将文件上传到后台的application/admin/view/extend/upload/
目录下。
wjssk.html内容
<div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}>
<label class="layui-form-label">图床接口:</label>
<div class="layui-input-block">
<input type="text" name="upload[api][wjssk][api]" placeholder="请填写图床接口" value="{$config['upload']['api']['wjssk']['api']}" class="layui-input" >
</div>
</div>
<div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}>
<label class="layui-form-label">上传字段名:</label>
<div class="layui-input-block">
<input type="text" name="upload[api][wjssk][field]" placeholder="请填写上传字段名,可能是image、file等等" value="{$config['upload']['api']['wjssk']['field']}" class="layui-input" >
</div>
</div>
<div class="layui-form-item upload_mode mode_Wjssk" {if condition="$config['upload']['mode'] neq 'Wjssk'"}style="display:none;" {/if}>
<label class="layui-form-label">返回路径:</label>
<div class="layui-input-block">
<input type="text" name="upload[api][wjssk][reback]" placeholder="请填写返回路径,data||src" value="{$config['upload']['api']['wjssk']['reback']}" class="layui-input" >
</div>
</div>
{/tabs-pane}
aaa
如果有问题,告诉我一声,这个有一段时间没弄了
学习一下
大佬你好,请问这个上传字段和返回路径应该填什么嘞
你自己搭建的图床接口或者你找的图床是什么,我帮你看一下
好的大佬,我现在还没搭建,晚上我搭建好发你,我先去给你打个赏
感谢
诶,这有个现成的yy.ewinf.com,麻烦大佬给看一下吧
接口:http://yy.ewinf.com/upimg.php
字段名:file
返回路径:msg
ok,感谢大佬
你试试看
可以了,十分感谢
能用就好
{
code:"200"
msg:"成功"
data:{
create_time:"2022-01-08 23:23:39"
id:"1083"
ip:"192.168.1.3"
md5:"123"
mime:"image/gif"
name:"202201082323395119.gif"
path:"LightPicture/2022/01/202201082323395119.gif"
size:17887
storage_id:1003
update_time:"2022-01-08 23:23:39"
url:"https://geek-1252271632.cos.ap-chengdu.myqcloud.com/LightPicture/2022/01/202201082323395119.gif"
user_id:1
}
}
老哥再麻烦给看一下,这个的返回路径是啥嘞,这个url在data里面不知道怎么表示出来
你试试这个:data||url
可以了大佬,非常感谢
还有你的图片地址是这个https://geek-1252271632.cos.ap-chengdu.myqcloud.com/LightPicture/2022/01/202201082323395119.gif吗
学习一下
學習學習
aaa
ddddd
看看怎么弄
XXXX学习一下
的点点滴滴多多多多多多多多多多多多多多多多多
看看,看看
试试看
75577
学习一下
查看一下
学习下
试一下
看看,给力给力
拿走看看
感谢大佬