Symfony Скачать потоковый - PullRequest
       56

Symfony Скачать потоковый

1 голос
/ 08 октября 2019

Я пытаюсь передать большой загружаемый файл (до 4 ГБ) с помощью объекта Symfony: StreamedResponse

Я могу загрузить один файлс кодом ниже.

Моя проблема во время этой загрузки, мой сервер завис до конца.

Итак, что я сделал не так!

Проблема с моим PHPкод или мой NGINX конфиг?

Спасибо за вашу помощь

    /**
     * @Route("/test/dl", name="test-download-start")
     * @param string $webDirectory
     * @return StreamedResponse
     */
    public function testDl(string $webDirectory)
    {
        $path = $webDirectory . '\\public\\Softwares\\InitMedia\\5d9b516a8140b.zip';
        $response = new StreamedResponse();
        $response->setCallback(function () use ($path) {
            $handle = fopen($path, 'rb');
            while (!feof($handle)) {
                $buffer = fread($handle, 1024);
                echo $buffer;
                flush();
            }
            fclose($handle);
        });
        $response->headers->set('Content-Type', 'application/zip');
        $response->headers->set('Content-Disposition', 'attachment;filename="test.zip"');
        return $response;
    }

NB : я пытался с BinaryFileResponse это же

    /**
     * @Route("/test/dl2", name="test-download-start2")
     * @param string $webDirectory
     * @return BinaryFileResponse
     */
    public function testDl2(string $webDirectory)
    {
        $path = $webDirectory . '\\public\\Softwares\\InitMedia\\5d9b516a8140b.zip';
        $response = new BinaryFileResponse($path);
        $response->headers->set('Content-Disposition', 'attachment;filename="test.zip"');
        return $response;
    }
...