$uploadSession = $this->metaClient->request('POST', sprintf('%s/uploads', $this->metaAppId), [ 'query' => [ 'file_name' => $mediaObject->getFilePath(), 'file_length' => $mediaObject->getContentSize(), 'file_type' => $mediaObject->getMimeType(), 'access_token' => $credential->getAccessToken(), 'appsecret_proof' => $this->secretProof($credential->getAccessToken()), ], ])->toArray(); if (!isset($uploadSession['id'])) { throw new BroadcastServiceProviderException('Error while creating upload session'); } $handle = $this->metaClient->request('POST', '/' . $uploadSession['id'], [ // / is important see https://github.com/symfony/symfony/issues/54332 'headers' => [ 'file_offset' => '0', 'content-length' => $mediaObject->getContentSize(), ], 'body' => $this->mediaStorage->readStream($mediaObject->getFilePath()), 'query' => [ 'access_token' => $credential->getAccessToken(), 'appsecret_proof' => $this->secretProof($credential->getAccessToken()), ], ])->toArray(); return $handle['h']; }