示例#1
0
 public function testGetMimeType()
 {
     $mimeTypes = new MimeTypes();
     $read = $mimeTypes->getMimeType('test.css');
     $expected = 'text/css';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType('test.jpg');
     $expected = 'image/jpeg';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType(__DIR__ . '/../../src/static/css/vendor/bootstrap/bootstrap.css');
     $expected = 'text/css';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType(__DIR__ . '/../../src/static/images/flags/ad.png');
     $expected = 'image/png';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType(__DIR__ . '/../../src/static/js/vendor/moment.min.js');
     $expected = 'application/x-javascript';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType(null);
     $expected = 'application/octet-stream';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType('foo');
     $expected = 'application/octet-stream';
     $this->assertSame($expected, $read);
     $read = $mimeTypes->getMimeType('');
     $expected = 'application/octet-stream';
     $this->assertSame($expected, $read);
 }
示例#2
0
 /**
  * The controller for serving static files.
  *
  * @param Request $request
  * the current request
  * @param Application $app
  * the Silex application
  *
  * @return Response
  * redirects to the instance details page or 404 on invalid input
  */
 public function staticFile(Request $request, Application $app)
 {
     $fileParam = str_replace('..', '', $request->get('file'));
     $file = __DIR__ . '/../static/' . $fileParam;
     if (!$fileParam || !file_exists($file)) {
         return $this->getNotFoundPage($app, $app['translator']->trans('crudlex.resourceNotFound'));
     }
     $mimeTypes = new MimeTypes();
     $mimeType = $mimeTypes->getMimeType($file);
     $size = filesize($file);
     $streamedFileResponse = new StreamedFileResponse();
     $response = new StreamedResponse($streamedFileResponse->getStreamedFileFunction($file), 200, ['Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . basename($file) . '"', 'Content-length' => $size]);
     $response->setETag(filemtime($file))->setPublic()->isNotModified($request);
     $response->send();
     return $response;
 }
 /**
  * {@inheritdoc}
  */
 public function renderFile(Entity $entity, $entityName, $field)
 {
     $targetPath = $this->getPath($entityName, $entity, $field);
     $fileName = $entity->get($field);
     $file = $targetPath . '/' . $fileName;
     $response = new Response('');
     $mimeTypes = new MimeTypes();
     $mimeType = $mimeTypes->getMimeType($file);
     $size = filesize($file);
     if ($fileName && file_exists($file)) {
         $streamedFileResponse = new StreamedFileResponse();
         $response = new StreamedResponse($streamedFileResponse->getStreamedFileFunction($file), 200, ['Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . $fileName . '"', 'Content-length' => $size]);
         $response->send();
     }
     return $response;
 }
 /**
  * {@inheritdoc}
  */
 public function renderFile(Entity $entity, $entityName, $field)
 {
     $fileName = $entity->get($field);
     $mimeTypes = new MimeTypes();
     $mimeType = $mimeTypes->getMimeTypeByExtension($fileName);
     $key = $this->getKey($entity, $entityName, $field) . '/' . $fileName;
     $result = $this->client->getObject(['Bucket' => $this->bucket, 'Key' => $key]);
     $result['Body']->rewind();
     $response = new StreamedResponse(function () use($result) {
         while ($data = $result['Body']->read(1024)) {
             echo $data;
             flush();
         }
     }, 200, ['Cache-Control' => 'public, max-age=86400', 'Content-length' => $result['ContentLength'], 'Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . $fileName . '"']);
     $response->send();
     return $response;
 }