上传 Twitter 视频错误 (PHP)。 API 响应:分段加起来不等于提供的总文件大小

2024-01-08

我正在尝试使用 API 和 tmhOAuth 请求将视频上传到 Twitter,但是我从 Twitter 收到错误:“片段加起来不等于提供的总文件大小。”。

我检查了块大小与 INIT 命令中提供的大小它们是相等的。你能帮我找到解决方案吗?

这是我用作基础的解决方案 https://stackoverflow.com/questions/32231642/uploading-videos-to-twitter-using-api

这是我的代码:

/**
 * @param string $pathToVideo
 *
 * @return string
 *
 * @throws UploadException
 * @throws \RuntimeException
 */
public function uploadVideo($pathToVideo)
{
    //execute upload init and get media ID form init command
    $mediaId = $this->init($pathToVideo);

    //uploading video
    $this->append($pathToVideo, $mediaId);

    //finalize uploading
    $code = $this->finalize($mediaId);
}


/**
 * @param string $mediaId
 *
 * @return int
 */
private function finalize($mediaId)
{
    return $this->sendPostRequest(['command'  => 'FINALIZE', 'media_id' => $mediaId]);
}

/**
 * @param string $pathToVideo
 * @param string $mediaId
 *
 * @throws UploadException
 */
private function append($pathToVideo, $mediaId)
{
    //read video file
    $fp = fopen($pathToVideo, 'r');
    //segment counter
    $segmentId = 0;
    $uploadedBytes = 0;

    while (! feof($fp)) {
        $chunk = fread($fp, self::CHUNK_LIMIT);
        $uploadedBytes += strlen($chunk);
        $code = $this->sendPostRequest([
            'command'       => 'APPEND',
            'media_id'      => $mediaId,
            'media'         => $chunk,
            'segment_index' => $segmentId,
        ], true);

        if (!in_array($code, [Response::HTTP_CONTINUE, Response::HTTP_NO_CONTENT], true)) {
            throw new UploadException(sprintf(
                "Uploading Twitter video failed during APPEND. Returned code %d.\nPath to video %s.\nResponse: %s",
                $code,
                $pathToVideo,
                $this->tmhOAuth->response['response']
            ));
        }

        $segmentId++;
    }

    fclose($fp);
}

/**
 * @param string $pathToVideo
 *
 * @return string
 *
 * @throws UploadException
 */
private function init($pathToVideo)
{
    $fileSize = filesize($pathToVideo);
    $code = $this->sendPostRequest([
        'command'     => 'INIT',
        'total_bytes' => $fileSize,
        'media_type'  => 'video/mp4',
    ]);

    $response = $this->tmhOAuth->response['response'];

    if ($this->isSuccessCode($code)) {
        //return media ID form init command
        return json_decode($response)->media_id_string;
    }

    throw new UploadException(sprintf(
        "Uploading Twitter video failed during INIT. Returned code %d.
        Path to video %s, file size %d.\nEndpoint: " . $this->uploadUrl . "\nResponse %s",
        $code,
        $pathToVideo,
        $fileSize,
        $response
    ));
}

/**
 * @param array $options
 *
 * @return int
 */
private function sendPostRequest($options, $isMultipart = false)
{
    return $this->tmhOAuth->request(
        'POST',
        $this->uploadUrl,
        $options,
        true,
        $isMultipart
    );
}

我找到了解决方案。当我将 CHUNK_LIMIT 设置为 25000 时,它开始工作。我尝试使用50000,但最终失败了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传 Twitter 视频错误 (PHP)。 API 响应:分段加起来不等于提供的总文件大小 的相关文章

  • 在 ruby​​ 中使用 Blowfish 加密字符串返回的字符串比 php 中的相同过程要短

    这让我很困惑 当我尝试使用以下输入用 Blowfish 加密字符串时 key 某个键 输入 输入字符串 我得到以下结果 ruby 79af8c8ee9220bde php 79af8c8ee9220bdec2d1c9cfca7b13c6 我
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • WordPress 安装中发现的恶意 PHP 代码有什么作用?

    我能够解码在一些 WordPress 文件中找到的以下 PHP 脚本 只是出于好奇 有人可以告诉我这段代码实际上是做什么的吗 看起来它已经以某种方式复制到同一服务器上的其他 WordPress 安装中
  • PHP 中 file、file_get_contents 和 fopen 之间的区别

    我是 PHP 新手 我不太确定 两者之间有什么区别file file get contents and fopen 函数 什么时候应该使用其中一个而不是另一个 前两个 file http www php net manual en func
  • TCPDF / FPDI 可以接受 PDF 作为字符串吗?

    是否可以将 TCPDF 或 FPDI PDF 作为字符串提供 我有一个传入的 PDF 数组作为字符串 但无法写入磁盘 我在文档中找不到与此相关的任何内容 如果没有 是否有一种有效的方法来从内存或作为对象存储 读取这些 PDF 将它们喂给 F
  • 在 PHP 中拆分 XML

    我有一个带有根元素和多个项目子元素的合并 xml 像这样的东西
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • Opencart 的 $this->config->get('module_var_name')

    我正在尝试自定义 Opencart 支付模块 我看到很多地方都使用了配置信息 但我找不到任何创建正在使用的变量的内容 我知道在管理页面中 如果我选择 paypal 标准 我可以设置所有 配置 信息 但我找不到强调它的 模型 是否有模型 我希
  • 根据类别 woocommerce 更改同一产品的默认变体值

    我正在研究一种根据其所属类别显示同一产品的默认变体值的方法 例如 我出售一张带有蓝色和红色选项的卡 当用户进入 一 类别时 我希望默认值为蓝色 如果他属于第二类 则该值将为红色 我发现了一个钩子woocommerce product def
  • Laravel 类邮件程序不存在

    我将应用程序从 5 更新到 5 2 现在 当我调用 Mail send 时 它会返回一个异常 Class mailer 不存在 Mail send emails mail data gt content function m use to
  • Laravel 上传前如何压缩图像?

    我正在制作一个图片库网站 用户可以在其中上传任何图像 它们将显示在前端 我需要在不影响图像质量的情况下压缩图像 以减小图像大小 以便页面加载速度不会影响那么大 我使用以下代码来上传图像 rules array file gt require
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • 表单提交后显示 $_FILES['image']

    提交表单后如何显示上传的图片 提交表单后 它将是一个预览页面 因此我不会在 MySQLet 中存储图像类型 BLOB 如何显示 FILES image
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • PHP 中的坏词过滤器?

    我正在用 PHP 编写一个坏词过滤器 我在数组中有一个坏词列表 方法 clean text 的写法如下 public static function cleanse text originalstring if self is sorted

随机推荐