为了账号安全,请及时绑定邮箱和手机立即绑定

使用带有 php 的 chevereto api 上传图像

使用带有 php 的 chevereto api 上传图像

PHP
慕少森 2023-04-21 15:53:46
我正在尝试将图像从我的服务器上传到安装了 chevereto 的 img 服务器,但我无法让它工作到目前为止,这是我的代码: $directory = "/var/www"; $images = glob($directory . "/*.jpg");foreach($images as $image){  echo $image;  $data =  base64_encode(file_get_contents($image));  $run= shell_exec("curl --location --request POST \"http://ip/api/1/upload/?key=123456789&source=$data&format=json\"");print_r($run);}收到错误:414 Request-URI Too Large这是 api 文档: https: //chevereto.com/docs/api-v1
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您正在使用POST请求方法,但您发送的是source parameter in URL. 您的URL$data中的 是 base64 编码的,这会产生一个非常大的字符串。这就是您收到错误的原因414 Request-URI Too Large

解决方案:

您应该使用相同的 POST 方法将参数更改为 JSON 正文。

从您提供的文档中chevereto可以清楚地看出。

API v1 调用可以使用 POST 或 GET 请求方法完成,但由于 GET 请求受 URL 允许的最大长度限制,您应该更喜欢 POST 请求方法。

因此,使用 POST 方法和包含成对参数的 JSON Body key:value。这将解决问题。

示例 PHP 代码:

$requestData = [

    'key' => 123456789,

    'source' => 'base64EncodedStringHere',

    'format' => 'json'

];


$jsonData = json_encode($jsonData);


$curl = curl_init();


curl_setopt_array($curl, array(

  CURLOPT_URL => "http://ip/api/1/upload",

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => "",

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => "POST",

  CURLOPT_POSTFIELDS => $jsonData,

  CURLOPT_HTTPHEADER => array(

    "Content-Type: application/json"

  ),

));


$response = curl_exec($curl);


curl_close($curl);

echo $response;


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信