错误 400:'不支持媒体类型'application/json; charset=UTF-8'。”
P粉818561682
P粉818561682 2024-03-28 18:05:10
0
1
378

祝您玩得开心,我使用 Google api v3 将视频上传到 YouTube。不幸的是,我从昨天开始就面临这个错误,代码或服务器没有任何更改。

我在不同部分搜索了错误文本,但没有得到任何结果。我唯一发现的是这个包和这个地址的文件 src/Http/MediaFileUpload.php 指定content-type,值为application/json;设置 charset=UTF-8。我想这就是问题所在。请指导我。

谢谢

环境详细信息

  • 操作系统:Linux
  • PHP version: 8.1.8
  • 软件包名称和版本:“google/apiclient”:“^2.13.2”
  • Laravel:^9.0

重现步骤

"error": {
    "code": 400,
    "message": "Media type 'application/json; charset=UTF-8' is not supported. ",
    "errors": [
      {
        "message": "Media type 'application/json; charset=UTF-8' is not supported. ",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }

代码示例

 $chunkSizeBytes = 15 * 1024 * 1024;
        $client->setDefer(true);
        $insertRequest = $youtube->videos->insert("status,snippet,recordingDetails", $video , [
            'notifySubscribers' => true
        ]);
        $media = new MediaFileUpload(
            $client,
            $insertRequest,
            'video/'.File::extension($videoPath),
            null,
            false,
            $chunkSizeBytes
        );
        $media->setFileSize(File::size($videoPath));

        $status = false;
        $handle = fopen($videoPath, "rb");
        while (!$status && !feof($handle)) {
            $chunk = fread($handle, $chunkSizeBytes);
            $status = $media->nextChunk($chunk);
        }
        fclose($handle);

        $client->setDefer(false);

P粉818561682
P粉818561682

全部回复(1)
P粉872101673

查看代码,当 $resumable 为 false 时,媒体类型 application/json 发生(请参阅 此处此处)。

所以我会尝试设置 $resumable = true (这是 MediaFileUpload 的第五个参数)。您可以在 large-file-upload.php

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!