/** * {@inheritdoc} */ protected function setHeaders(Response $response, ImageInterface $image, \DateTime $lastMod) { $response->headers->set('Content-type', $image->getMimeType()); $response->setLastModified($lastMod); $response->headers->set('Accept-ranges', 'bytes'); $response->headers->set('Keep-Alive', 'timeout=5, max=99'); $response->headers->set('Connection', 'keep-alive', true); // return normal by setting image contents; if ($image->isProcessed()) { $response->setContent($content = $image->getContents()); $response->setEtag(hash('md5', $content)); } else { // set the xsend header: $file = $image->getSource(); $response->setEtag(md5_file($file)); $response->headers->set('Content-Length', filesize($file)); $response->headers->set('Content-Disposition', sprintf('inline; filename="%s"', basename($file))); $response->headers->set('X-Sendfile', $file); } }
/** * {@inheritDoc} */ public function getImageUrl(ImageInterface $image) { if (false !== strpos($image->getSource(), $this->config->base)) { $base = substr($image->getSource(), strlen($this->config->base)); $input = $this->input; return sprintf('/%s', trim(implode('/', [$this->config->base_route, $input['parameter'], trim($base, '/'), $input['filter']]), '/')); } }