symfony — BinaryFileResponse с ресурсом php от Flysystem

Мне нужно использовать BinaryFileResponse для корректной обработки видео с помощью Length Headers и co. Также я хочу, чтобы пользователь разрешил настраивать другие хранилища (S3, Dropbox). Flysystem readStream метод вернет resource но BinaryFileResponse нужен string дорожка. Какой лучший способ справиться с этим? Сначала загрузить весь файл на сервер до ответа?

1

Решение

Для этого вы можете использовать класс StreamedResponse. Вы должны будете сделать некоторую передачу данных самостоятельно, но это довольно просто. Например, этот код использовался для включения «принудительной загрузки» для PDF.

return new StreamedResponse(function () use ($stream) {
fpassthru($stream);
exit();
}, 200, [
'Content-Transfer-Encoding', 'binary',
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('attachment; filename="%s.pdf"', $filename),
'Content-Length' => fstat($stream)['size'],
]);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]