Silex, el manual oficial

2.12. Enviando archivos

Silex define el atajo sendFile() para enviar archivos como respuesta de una petición (cuando un archivo es público, es más eficiente acceder a el directamente a través del servidor web).

El método sendFile() admite cuatro argumentos: la ruta del archivo, el código de estado, las cabeceras y la forma en la que se entrega el archivo (mostrarlo en el navegador o forzar su descarga). Técnicamente este método crea una respuesta especial de tipo BinaryFileResponse:

$app->get('/files/{path}', function ($path) use ($app) {
    if (!file_exists('/base/path/' . $path)) {
        $app->abort(404);
    }

    return $app->sendFile('/base/path/' . $path);
});

Usando la API de la clase BinaryFileResponse puedes modificar la respuesta antes de enviarla al usuario:

return $app
    ->sendFile('/base/path/' . $path)
    ->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'pic.jpg')
;