Принудительная загрузка файла, прочитанного Flysystem из AWS S3 - PullRequest
0 голосов
/ 26 сентября 2018

Доброе утро всем,

Мой вопрос прост: я использую Flysystem (на Symfony) для восстановления ресурса из S3 (через DigitalOcean).Я хотел бы иметь возможность вернуть его для загрузки пользователю.Вот мой код:

    $client = new S3Client([
        'credentials' => [
            'key'    => '',
            'secret' => '',
        ],
        'region' => '',
        'version' => 'latest',
        'endpoint' => 'https://ams3.digitaloceanspaces.com',
    ]);

    $adapter = new AwsS3Adapter($client, '');

    $filesystem = new Filesystem($adapter);
    $filename = 'file.png';
    $stream = $filesystem->readStream('file.png');
    $contents = stream_get_contents($stream);
    fclose($stream);

    $response = new Response($stream);
    $disposition = $response->headers->makeDisposition(
        ResponseHeaderBag::DISPOSITION_ATTACHMENT,
        $filename
    );
    $response->headers->set('Content-Disposition', $disposition);

    return $response;

=> Файл поврежден ...

Есть идеи?Большое спасибо за вашу помощь.Гийом

ОБНОВЛЕНИЕ Когда я проверяю с помощью текстового файла, я получаю содержимое моего файла, но с заголовком:

HTTP/1.1 200 OK
Date: Thu, 27 Sep 2018 06:59:35 GMT
Server: Apache/2.4.29 (Ubuntu)
Vary: Authorization,Accept-Encoding
Cache-Control: no-cache, private
Content-Disposition: attachment; filename=toto.png
Link: <http://localhost/api/public/api/docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"
Content-Length: 517
Content-Type: text/html; charset=UTF-8

Любые идеи, чтобы загрузить только содержимое файла, и для всех типов файлов?Большое спасибо за все, Гийом

...