/**
  * @param  Application $app
  * @param  Request     $request
  * @return Response
  */
 public function fileUploadAction(Application $app, Request $request)
 {
     $uploadDir = __DIR__ . '/../../../web' . $app['config']['upload_dir'];
     $file = new File('file', new FileSystem($uploadDir));
     $file->addValidations(array(new Mimetype(array('image/png', 'image/gif', 'image/jpeg')), new Size('5M')));
     // Upload file to server
     try {
         $file->setName($app['slug']->slugify($file->getName()));
         $file->upload();
         $app['monolog']->addDebug(sprintf("File uploaded: %s", json_encode($file->getNameWithExtension())));
     } catch (\Exception $exception) {
         $errorMessage = join('<br />', $file->getErrors());
         $app['monolog']->addError(sprintf("Error during file upload: %s", $errorMessage));
         return new Response(sprintf("Erreur : %s", $errorMessage), 400);
     }
     // Save file to db
     try {
         $photo = $app['photos']->add($file->getNameWithExtension());
     } catch (\Exception $exception) {
         $app['monolog']->addError(sprintf("Error during file insertion: %s", $exception->getMessage()));
         // Remove file from upload dir
         unlink($uploadDir . $file->getNameWithExtension());
         return new Response(sprintf("Erreur : %s", $exception->getMessage()), 400);
     }
     // Generate thumbnails
     $app['photos']->generateThumbnails($photo);
     return new Response($photo->id);
 }