Верните личный файл S3 в виде потока

#php #laravel #amazon-s3 #laravel-8

#php #ларавель #amazon-s3 #ларавель-8

Вопрос:

В настоящее время я работаю над маршрутом для проекта, который мне нужен, чтобы получить определенный файл из S3, прочитать его содержимое и вернуть в двоичном виде. Я не могу просто использовать URL-адрес файла S3, потому что он закрытый и намеренный (мы просто не хотим, чтобы файлы корзины были открыты).
Но проблема в том, что я хочу транслировать его на новой странице, чтобы не было необходимости загружать файл.
Обслуживание:

 $file = $this-gt;s3Provider-gt;getFileContents(false); // gets the file binary return $file;  

Контроллер:

 return response()-gt;streamDownload(function() use($file) {  echo $file; // streams data to download it, but I want just to show the file...  }, $filename);  

Ответ №1:

Я думал, что вы используете Laravel, если да, то вы могли бы вернуть свое изображение вот так:

 return response($file, $filename, [  'Content-Type' =gt; 'image/png',  'Content-Length' =gt; filesize($file)  ]);  

Еще один способ, который я использую для возврата изображения, — это:

 return response()-gt;file($path, array('Content-Type'=gt;'image/jpg'));  

Content-Type должен быть ваш тип изображения (JPG, PNG и т.д.).

Комментарии:

1. это именно то, что я искал, спасибо!