protected function handleUpload($file, ResponseInterface $response, Request $request)
{
/** @var $mediaAdmin \Sonata\MediaBundle\Admin\ORM\MediaAdmin */
$mediaAdmin = $this->container->get('sonata.media.admin.media');
$mediaAdmin->setRequest($request);
/** @var Media $media */
$media = $mediaAdmin->getNewInstance();
$media->setEnabled(true);
$media->setName($file->getClientOriginalName());
$media->setBinaryContent($file);
$tags = explode(',', $request->get('tags'));
$tagCollection = new ArrayCollection();
foreach ($tags as $tagId) {
$tag = $this->container->get('doctrine')->getRepository('NetworkingInitCmsBundle:Tag')->find($tagId);
if ($tag) {
$tagCollection->add($tag);
}
}
$media->setTags($tagCollection);
$checksum = Util\Checksum::fromFile($file->getPathName());
$duplicate = $mediaAdmin->checkForDuplicate($media, $checksum);
if ($duplicate) {
$path = $mediaAdmin->generateObjectUrl('edit', $duplicate);
$response->offsetSet('url', $path);
$response->offsetSet('id', $duplicate->getId());
throw new DuplicateMediaException('File is duplicate');
}
try {
$mediaAdmin->create($media);
$path = $mediaAdmin->generateObjectUrl('edit', $media);
$response->offsetSet('url', $path);
$response->offsetSet('id', $media->getId());
} catch (\Exception $e) {
throw new UploadException($e->getMessage());
}
}