<?php
namespace AppBundle\Controller;
use AppBundle\Type\UploadType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\
File\UploadedFile
; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class FileController extends Controller
{
/**
* @Route("/upload")
*/
public function uploadAction(Request $request)
{
$form = $this->createForm(UploadType::class);
$form->handleRequest($request);
if ($form->isSubmitted()) {
/** @var UploadedFile $uploadedFile */
$uploadedFile = $form['file']->getData();
$file = $this->get('file_uploader')->upload(
$uploadedFile,
$uploadedFile->getClientOriginalName()
);
return new RedirectResponse($this->generateUrl('file', ['id' => $file->getId()]));
}
return $this->render('upload.html.twig', [
'form' => $form->createView(),
]);
}
/**
* @Route("/file/{id}", name="file", requirements={"id": "\d+"})
*/
public function getOneAction(Request $request, $id)
{
$file = $this->getDoctrine()->getRepository('AppBundle:File')->find($id);
if (!$file) {
throw new NotFoundHttpException();
}
return $this->render('file.html.twig', [
'file' => $file,
]);
}
}
PD9waHAKCm5hbWVzcGFjZSBBcHBCdW5kbGVcQ29udHJvbGxlcjsKCnVzZSBBcHBCdW5kbGVcVHlwZVxVcGxvYWRUeXBlOwp1c2UgU2Vuc2lvXEJ1bmRsZVxGcmFtZXdvcmtFeHRyYUJ1bmRsZVxDb25maWd1cmF0aW9uXFJvdXRlOwp1c2UgU3ltZm9ueVxCdW5kbGVcRnJhbWV3b3JrQnVuZGxlXENvbnRyb2xsZXJcQ29udHJvbGxlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEh0dHBGb3VuZGF0aW9uXEZpbGVcVXBsb2FkZWRGaWxlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVkaXJlY3RSZXNwb25zZTsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XEh0dHBGb3VuZGF0aW9uXFJlcXVlc3Q7CnVzZSBTeW1mb255XENvbXBvbmVudFxIdHRwS2VybmVsXEV4Y2VwdGlvblxOb3RGb3VuZEh0dHBFeGNlcHRpb247CgpjbGFzcyBGaWxlQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIgCnsKICAgIC8qKgogICAgICogQFJvdXRlKCIvdXBsb2FkIikKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVwbG9hZEFjdGlvbihSZXF1ZXN0ICRyZXF1ZXN0KQogICAgewogICAgICAgICRmb3JtID0gJHRoaXMtPmNyZWF0ZUZvcm0oVXBsb2FkVHlwZTo6Y2xhc3MpOwoKICAgICAgICAkZm9ybS0+aGFuZGxlUmVxdWVzdCgkcmVxdWVzdCk7CiAgICAgICAgaWYgKCRmb3JtLT5pc1N1Ym1pdHRlZCgpKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIFVwbG9hZGVkRmlsZSAkdXBsb2FkZWRGaWxlICovCiAgICAgICAgICAgICR1cGxvYWRlZEZpbGUgPSAkZm9ybVsnZmlsZSddLT5nZXREYXRhKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5nZXQoJ2ZpbGVfdXBsb2FkZXInKS0+dXBsb2FkKAogICAgICAgICAgICAJJHVwbG9hZGVkRmlsZSwKICAgICAgICAgICAgCSR1cGxvYWRlZEZpbGUtPmdldENsaWVudE9yaWdpbmFsTmFtZSgpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gbmV3IFJlZGlyZWN0UmVzcG9uc2UoJHRoaXMtPmdlbmVyYXRlVXJsKCdmaWxlJywgWydpZCcgPT4gJGZpbGUtPmdldElkKCldKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnJlbmRlcigndXBsb2FkLmh0bWwudHdpZycsIFsKICAgICAgICAgICAgJ2Zvcm0nID0+ICRmb3JtLT5jcmVhdGVWaWV3KCksCiAgICAgICAgXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAUm91dGUoIi9maWxlL3tpZH0iLCBuYW1lPSJmaWxlIiwgcmVxdWlyZW1lbnRzPXsiaWQiOiAiXGQrIn0pCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPbmVBY3Rpb24oUmVxdWVzdCAkcmVxdWVzdCwgJGlkKQogICAgewogICAgICAgICRmaWxlID0gJHRoaXMtPmdldERvY3RyaW5lKCktPmdldFJlcG9zaXRvcnkoJ0FwcEJ1bmRsZTpGaWxlJyktPmZpbmQoJGlkKTsKICAgICAgICBpZiAoISRmaWxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEh0dHBFeGNlcHRpb24oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVuZGVyKCdmaWxlLmh0bWwudHdpZycsIFsKICAgICAgICAgICAgJ2ZpbGUnID0+ICRmaWxlLAogICAgICAgIF0pOwogICAgfQp9