这是快手的图床接口
- curl -H "Content-Type: application/json" -X POST -d '{"mediaType":"image","token":"xxx","fileName":"图片地址","uploadSource":"app_cp"}' "https://onvideoapi.kuaishou.com/api/video/upload/complete_upload?source=cp&__redirectURL=https%3A%2F%2Fonvideo.kuaishou.com%2Fhub%2Fcreate%2Fmaterial%3Fsource%3Dcp" -H "Cookie: xxx" -H "Origin: https://onvideo.kuaishou.com" -H "Referer: https://onvideo.kuaishou.com/" -H "Host: onvideoapi.kuaishou.com"
这是我最开始的写法
- <?php
function PVUpload($file) {
$post['file'] = file_path($file);
$imgurl2 = get_curl($file,'https://onvideoapi.kuaishou.com/api/video/upload/complete_upload?source=cp&__redirectURL=https%3A%2F%2Fonvideo.kuaishou.com%2Fhub%2Fcreate%2Fmaterial%3Fsource%3Dcp', $post, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36');
echo $file;
$imgurl2 = json_decode($imgurl2, true);
if(!empty($imgurl2)) {
$imgurl= $imgurl2['data']['mediaUrl'];
} else {
$imgurl= '';
}
return $imgurl;
}
function get_curl($imgfile, $url, $post = 0, $ua = 0) {
$img = $imgfile;
$postData = array(
"mediaType" => "image",
"token" => "xxx",
"fileName" => $img,
"uploadSource" => "app_cp"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
// 不验证证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 最大执行时间
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
$httpheader[] = "Content-Type: application/json";
$httpheader[] = "Cookie: xxx";
$httpheader[] = "Origin: https://onvideo.kuaishou.com";
$httpheader[] = "Referer: https://onvideo.kuaishou.com/";
$httpheader[] = "Host: onvideoapi.kuaishou.com";
//$ip = mt_rand(48, 140) . "." . mt_rand(10, 240) . "." . mt_rand(10, 240) . "." . mt_rand(10, 240);
//随机 ip
//$httpheader[] = 'CLIENT-IP:' . $ip;
//$httpheader[] = 'X-FORWARDED-FOR:' . $ip;
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
//curl_setopt($ch, CURLOPT_ENCODING, "gzip");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
function file_path($file) {
if (class_exists('CURLFile')) {
return $post['file'] = new \CURLFile(realpath($file));
} else {
return $post['file'] = '@' . realpath($file);
}
}
?>
测试了很多遍,上传不了文件。来个大佬指点一下,谢谢!
热议
2楼 zhongziso 昨天17:48
来个吴彦祖指点一下
3楼 qq53988545 昨天17:52
量了一下我的不止18cm,绑定
4楼 wwt654 昨天17:55
$ua这个变量有赋值,没看到代码调用啊
5楼 zhongziso 昨天17:56
$ua这个变量有赋值,没看到代码调用啊
UA这个不写都可以,第一个命令。使用curl命令行测试可以上传
6楼 sdqu 昨天18:00
7楼 wwt654 昨天18:04
UA这个不写都可以,第一个命令。使用curl命令行测试可以上传
那是不是路径的问题,我看你获取了文件的绝对路径$post['file'],但是没有调用,方法里还是用的$file
9楼 mjjok 昨天18:17
顶一下。。。。
10楼 zhongziso 昨天18:42
没你想的那么简单,数据是在 token 里面
能帮改一下吗?谢谢
12楼 inighty 半小时前
肯定没这么简单上传有前置请求
https://onvideoapi.kuaishou.com/api/video/upload/token
这个请求会返回token
真正的上传接口是https://upload.kuaishouzt.com/api/upload/fragment
进行碎片 多请求上传
然后发送
https://upload.kuaishouzt.com/api/upload/complete服务端返回是否上传完成
最后发送这个请求
https://onvideoapi.kuaishou.com/api/video/upload/complete_upload
服务端返回上传后的url
13楼 zhongziso 15分钟前
肯定没这么简单上传有前置请求
https://onvideoapi.kuaishou.com/api/video/upload/token
这个请求会返回 ...
这么复杂啊
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。
