通过Resumable功能将视频从亚马逊上传到Facebook,错误

时间:2016-01-22 11:28:16

标签: php facebook-graph-api amazon facebook-php-sdk amazon-cloudfront

我的公司可以将我们网站上的视频从亚马逊分享到他们的Facebook页面。我用过

$response = $fb->post("/{$page_id}/videos", $fbData, $accessToken);

及其工作但我想使用Resumable视频功能,因为只有这样他们才能上传大小超过1GB的大型视频。

        $fb = new Facebook(array(
        'app_id' => $facebook_settings['app_id'],
        'app_secret' => $facebook_settings['app_secret'],
        'default_graph_version' => $facebook_settings['default_graph_version'],
    ));
    try {

        $fbData = array(
            'title' => strip_tags($data['title']),
            'description' => strip_tags($data['description']),
            'asset_key' => $asset_key,
            //'source' => basename($data['url']),
        );


        //$response = $fb->post("/{$page_id}/videos", $fbData, $accessToken);
        $response = $fb->uploadVideo($page_id, $data['url'], $fbData, $accessToken, 5, null);
    }

    catch(FacebookResumableUploadException $e) {

        $this->markFacebookVideoUploaded($asset_key, true, null, $e->getMessage());
    }

当我使用这个uploadVideo函数时,它会给我错误[Symfony \ Component \ Debug \ Exception \ ContextErrorException]
  警告:filesize():http://d(this的stat失败是亚马逊上的视频网址。

uploadVideo调用Facebook.php文件中的启动函数时,它会出错,它试图获取文件大小,我认为它不可能。 任何建议或解决方案或有人以前经历过吗? 谢谢

1 个答案:

答案 0 :(得分:0)

  

从PHP 5.0.0开始,此函数也可以与某些URL包装器一起使用。有关哪些包装器支持stat()系列功能的列表,请参阅支持的协议/包装器列表。

HTTP(S)包装器不支持stat()

所以转到Facebook库FileUpload / FacebookFile.php,并替换

public function getSize()
{
  return filesize($this->path);
}

public function getSize()
{
   $head = array_change_key_case(get_headers($this->path, TRUE));
   return $filesize = $head['content-length'];
}