# Batch File Upload Example
This example covers uploading files in a batch request with the Facebook SDK for PHP.
## Example {#example}
The Graph API supports [file uploads in batch requests](https://developers.facebook.com/docs/graph-api/making-multiple-requests#binary) and the Facebook PHP SDK does all the heavy lifting to make it super easy to upload photos and videos in a batch request.
The following example will upload two photos and one video.
~~~~
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.2',
]);
// Since all the requests will be sent on behalf of the same user,
// we'll set the default fallback access token here.
$fb->setDefaultAccessToken('user-access-token');
$batch = [
'photo-one' => $fb->request('POST', '/me/photos', [
'message' => 'Foo photo',
'source' => $fb->fileToUpload('/path/to/photo-one.jpg'),
]),
'photo-two' => $fb->request('POST', '/me/photos', [
'message' => 'Bar photo',
'source' => $fb->fileToUpload('/path/to/photo-two.jpg'),
]),
'video-one' => $fb->request('POST', '/me/videos', [
'title' => 'Baz video',
'description' => 'My neat baz video',
'source' => $fb->videoToUpload('/path/to/video-one.mp4'),
]),
];
try {
$responses = $fb->sendBatchRequest($batch);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
foreach ($responses as $key => $response) {
if ($response->isError()) {
$e = $response->getThrownException();
echo 'Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n";
echo '
Graph Said: ' . "\n\n";
var_dump($e->getResponse());
} else {
echo "
(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "
\n";
echo "Response: " . $response->getBody() . "
\n\n";
echo "
\n\n";
}
}
~~~~