如何通过PHP API向Bunny CDN视频库上传视频文件?
Bunny CDN视频API上传文件的正确流程
你遇到的问题是因为Bunny CDN的视频上传需要分两步:先创建空的视频条目,再获取专属上传URL来上传实际视频文件。官方文档的示例只覆盖了第一步,下面是完整的实现步骤和代码:
步骤1:创建视频条目
这一步是初始化一个视频记录,生成videoId,后续上传会用到。你可以在请求里添加标题等元数据:
require_once('vendor/autoload.php'); $client = new \GuzzleHttp\Client(); $libraryId = "你的库ID"; $videoId = "自定义或生成的视频ID"; // 可以自己指定,也可以留空让系统生成 $response = $client->request('PUT', "https://video.bunnycdn.com/library/{$libraryId}/videos/{$videoId}", [ 'headers' => [ 'accept' => 'application/json', 'AccessKey' => '你的Bunny CDN API密钥', ], 'json' => [ 'title' => '我的测试视频', // 添加视频标题 'collectionId' => '' // 可选,指定分类ID ] ]); $videoData = json_decode($response->getBody(), true); $videoId = $videoData['guid']; // 如果之前没指定videoId,这里取返回的guid
步骤2:获取上传URL
创建条目后,调用接口获取该视频的专属上传URL:
$uploadResponse = $client->request('GET', "https://video.bunnycdn.com/library/{$libraryId}/videos/{$videoId}/uploadUrl", [ 'headers' => [ 'AccessKey' => '你的Bunny CDN API密钥', ] ]); $uploadUrl = json_decode($uploadResponse->getBody(), true)['uploadUrl'];
步骤3:上传视频文件
拿到上传URL后,用PUT请求把视频文件上传到这个地址:
$filePath = '/path/to/your/video.mp4'; $uploadFileResponse = $client->request('PUT', $uploadUrl, [ 'headers' => [ 'Content-Type' => 'video/mp4', // 根据你的视频格式调整 ], 'body' => fopen($filePath, 'r') ]); echo "上传成功,状态码:" . $uploadFileResponse->getStatusCode();
关键注意事项
- 确保API密钥有视频库的写入权限
- 上传时的
Content-Type要和视频文件格式匹配(比如video/mp4、video/mov等) - 如果视频文件较大,建议分块上传(Bunny CDN支持分块,可参考官方文档的分块上传说明)
内容的提问来源于stack exchange,提问作者Moaz
相关产品推荐
相关产品推荐

