就这个功能搞了有一个多小时,原因在于我不知道如何将接收到的图片在转给api。
各种方法都尝试过了,最后找到 new \CURLFile($filend)
, 这个方法,测试了一下,终于可以 了。
代码:
<?php
$file = $_FILES['file'];
$tmp = $_FILES['file']['tmp_name'];
$filend = '1.png';
move_uploaded_file($tmp, $filend);
$url = "https://pic.slhq.cn/api/upload";
$data = [ "file" => new\ CURLFile($filend),
// "file"=> "@".str_replace("\\","/",realpath($filend)),
"token" => "xxxxxxxxxxxxxxxxxxx"
//授权token
];
//post请求
$res = post($url, $data);
// 删除本地该图片
unlink($filend);
#
// 返回图片链接
// 已有格式,这边直接返回交给前端处理
die($res);
/** * 发起POST请求 */
function post($url, $msg) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, $msg);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:multipart/form-data']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
为什么我要弄这个?
因为 zblog 挂载的时候总是出现 csf 错误,搞了一天多都没搞定。
最后,自己写一个中转api就行了,把 php 放在同一个文件下,总算没有了xss 风险了。
谷歌浏览器再也不拦截我了。