错误 400:“不支持媒体类型‘application/json; charset=UTF-8’。”
P粉818561682
P粉818561682 2024-03-28 18:05:10
[PHP讨论组]

祝您玩得开心,我使用 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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号