有一个很好的时间,我使用谷歌API v3上传视频到YouTube。不幸的是,我从昨天开始就面临这个错误,代码或服务器没有任何变化。
我搜索了错误文本的不同部分,但没有得到任何结果。我发现的唯一一件事是,在这个包和这个地址src/Http/MediaFileUpload.php的文件中,指定了content-type,其值是application/json; charset=UTF-8。我想这就是问题所在。请指引我。
谢谢你
环境详情
- 操作系统:Linux
- PHP版本: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);
1条答案
按热度按时间izkcnapc1#
查看代码,当
$resumable
为false时,会出现媒体类型application/json
(参见此处和此处)。所以我会尝试设置
$resumable = true
(这是MediaFileUpload
的第五个参数)。你可以在large-file-upload.php
中看到一个例子。