18cm的,请进。这个接口用php应该怎么写呢?

80次阅读

共计 3218 个字符,预计需要花费 9 分钟才能阅读完成。

这是快手的图床接口

  1. 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”

复制代码

这是我最开始的写法

  1. <?php
  2. function PVUpload($file) {
  3.         $post[‘file’] = file_path($file);
  4.         $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’);
  5.         echo $file;
  6.         $imgurl2 = json_decode($imgurl2, true);
  7.         if(!empty($imgurl2)) {
  8.                 $imgurl= $imgurl2[‘data’][‘mediaUrl’];
  9.         } else {
  10.                 $imgurl= ”;
  11.         }
  12.         return $imgurl;
  13. }
  14. function get_curl($imgfile, $url, $post = 0, $ua = 0) {
  15.         $img = $imgfile;
  16.         $postData = array(
  17.   “mediaType” => “image”,
  18.   “token” => “xxx”,
  19.   “fileName” => $img,
  20.   “uploadSource” => “app_cp”
  21. );
  22.         $ch = curl_init();
  23.         curl_setopt($ch, CURLOPT_URL, $url);
  24.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  25.         curl_setopt($ch, CURLOPT_POST, 1);
  26.         curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  27.         // 不验证证书
  28.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  29.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  30.         // 最大执行时间
  31.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  32.         curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  33.         $httpheader[] = “Content-Type: application/json”;
  34.         $httpheader[] = “Cookie: xxx”;
  35.         $httpheader[] = “Origin: https://onvideo.kuaishou.com”;
  36.         $httpheader[] = “Referer: https://onvideo.kuaishou.com/”;
  37.         $httpheader[] = “Host: onvideoapi.kuaishou.com”;
  38.         //$ip = mt_rand(48, 140) . “.” . mt_rand(10, 240) . “.” . mt_rand(10, 240) . “.” . mt_rand(10, 240);
  39.         // 随机 ip
  40.         //$httpheader[] = ‘CLIENT-IP:’ . $ip;
  41.         //$httpheader[] = ‘X-FORWARDED-FOR:’ . $ip;
  42.         curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
  43.         //curl_setopt($ch, CURLOPT_ENCODING, “gzip”);
  44.         //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  45.         $ret = curl_exec($ch);
  46.         curl_close($ch);
  47.         return $ret;
  48. }
  49. function file_path($file) {
  50.         if (class_exists(‘CURLFile’)) {
  51.                 return $post[‘file’] = new CURLFile(realpath($file));
  52.         } else {
  53.                 return $post[‘file’] = ‘@’ . realpath($file);
  54.         }
  55. }
  56. ?>

复制代码

测试了很多遍,上传不了文件。来个大佬指点一下,谢谢!

网友回复:

注册 来个吴彦祖指点一下

zhongziso 量了一下我的不止 18cm,绑定

zhongziso $ua 这个变量有赋值,没看到代码调用啊

qq53988545 UA 这个不写都可以,第一个命令。使用 curl 命令行测试可以上传

wwt654 对比一下自己的 curl 发出去的包和命令行的有什么差异吧

zhongziso 那是不是路径的问题,我看你获取了文件的绝对路径 $post[‘file’],但是没有调用,方法里还是用的 $file

sdqu 没你想的那么简单,数据是在 token 里面 {“mediaType”:”image”,”token”:”Cg51cGxvYWRxlci50b2tlbhKBAqWKeXQRSPP_f8jVshavPTQKc1MWJUCoDJmhYn9ERNe289JCYyqTIVepamRJfamsxoem6ObW0EJ1bZvLVetkIsUwEJEtEW16M91396cm9pP5uxR_djdMBtFxqOtyVfbx5jJ2wY5CTKjzEzpLjTdWQTdnLpc_7BLQj6cTdofUaMgf_1lVoZL31jb3sl2Xw9JIlHkAynPYvF1vdJWPUcZySfr0dDz0nxVvECXZhjVpoKWc02L7KNSZ0YwAV0HBvUdpXS9dyJZv4TzYYheJ5wtd_DmKNPVUY6IG8JGXHP-g3lomFvI2ZUpy3_l9klSbaoxoeVOACn_11Tx451jLHmVrrtWQGhK-2iGxzJGIn-mQHYRspHbwVkIoBTAC”,”fileName”:”screenshot.png”,”uploadSource”:”picasso_onvideo”} 复制代码

wwt654 顶一下。。。。

920 能帮改一下吗?谢谢

注册 我试图看你怎么上传的,但你这变量传来传去的,你可有弄明白你传入的 file 跟 imgfile 是啥?我觉得你再慢慢理清楚就好。

正文完
 0