MongoDB GridFS найти файл по идентификатору - PullRequest
0 голосов
/ 25 сентября 2019

Я использую MongoDB GridFS для хранения файлов.Я пытаюсь реализовать решение, чтобы иметь возможность находить файлы по имени И ID

Найти файл и вернуть его довольно просто.

$bucket = DB::getMongoDB()->selectGridFSBucket();
$stream = $bucket->openDownloadStreamByName('file_name.pdf', ['revision' => 0]);
contents = stream_get_contents($stream);

return response($contents)
->header('Content-Type', 'application/pdf')
->header('Content-Disposition',  'attachment; filename="file_name.pdf"');

Как добиться того же при поиске файла по идентификатору, в случаях, когда мне будет известен только идентификатор файла (например: 5d89ff86740f35501419d7f2)?

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете использовать openDownloadStream, чтобы выбрать файл по id.


Из документов :

MongoDB\GridFS\Bucket::openDownloadStream

Выбирает файл GridFS по его _id и открывает его как читаемый поток.


Так что в вашем случае что-то вроде этого:

$bucket = DB::getMongoDB()->selectGridFSBucket();
$stream = $bucket->openDownloadStream('5d89ff86740f35501419d7f2');
...