PHP Twitter API分段上载问题:段的总和不等于所提供的总文件大小

问题描述 投票:1回答:1

所以我正在将Twitter API集成到应用程序中,并且我需要它能够发布图像,视频和GIF动画。

我正在使用php5.6和J7mbo / twitter-api-php软件包。

到目前为止,我的代码如下:

     $file = fopen(realpath('../path/' . $row['path']), 'rb');
      $size = fstat($file)['size'];
      $mime_type = mime_content_type($row['path']);

      var_dump($size);
      var_dump($mime_type);


      $upload_url = 'https://upload.twitter.com/1.1/media/upload.json';
      $requestMethod = 'POST';

  $postfields = array(
          "command" => "INIT",
          'media_type' => $mime_type,
        //  'media_category' => 'tweet_video',
          'total_bytes' => $size
      );

      $initResult = json_decode($twitter->buildOauth($upload_url, $requestMethod)
        ->setPostfields($postfields)
        ->performRequest());


      $mediaId = $initResult->media_id_string;

      $segmentId = 0;

      while (!feof($file)) {
        $chunk = fread($file, 100000);

          echo strlen($chunk);


          $postfields = array(
              "command" => "APPEND",
              "media_id" => $mediaId,
              "segment_index" => $segmentId,

              "media" => $chunk
          );

          //var_dump($chunk);

          $appendResult = $twitter->buildOauth($upload_url, $requestMethod)
            ->setPostfields($postfields)
            ->performRequest();

          echo('chunk: '. $segmentId);

          var_dump($appendResult);

          $segmentId++;
      }

      echo ('done uploading');

      fclose($file);

      $postfields = array(
          "command" => "FINALIZE",
          "media_id" => $mediaId
      );

      $finResult = $twitter->buildOauth($upload_url, $requestMethod)
        ->setPostfields($postfields)
        ->performRequest();

      var_dump($finResult);

无论我的块大小如何,FINALIZE请求的结果始终为:

{"request":"\/1.1\/media\/upload.json","error":"Segments do not add up to provided total file size."}"

[最令人沮丧的事实是,在我的测试中,$ size为273872,无论我如何分割块,它们的总长度始终为100%,保证为273872。

这里到底发生了什么?我什至该如何调试呢?

INIT工作。附录返回“”,但根据Twitter的文档(https://developer.twitter.com/en/docs/media/upload-media/api-reference/post-media-upload-append)完全正确。不过,我不知道如何提取响应状态,所以我不确定。

PS:我很长一段时间都没有使用过任何社交网络api,请告诉我您想让我添加到这篇文章中的任何内容。]

编辑:我用卷发将其重制。我有完全一样的结果。我以为“也许正在处理中”,所以我做了2次测试:

  • 我尝试睡觉20秒钟...结果相同。可能还有其他事情。
  • 所以我将Twitter API集成到应用程序中,并且我需要它能够发布图像,视频和动画gif。我正在使用php5.6和J7mbo / twitter-api-php软件包。到目前为止,我的代码为...

php api twitter
1个回答
0
投票

如果我上传视频,twurl也会出现同样的问题。 :-(

© www.soinside.com 2019 - 2024. All rights reserved.