Size: a a a

2021 May 05

EG

Egor Gruzdev in Laravel Pro
Так $link что содержит, скорее все протокол http тоже, а должен путь до файла на диске.
источник

МК

Мирко Крокоп... in Laravel Pro
Спасибо, что откликнулись!
Вы правы. Там ссылка на файл в моем S3 диске. Выходит, download() метод только для файлов на локальном диске?
А не подскажите, есть ли у Laravel что то для отдачи файлов по ссылке на внешние ресурсы?
Нагуглил file() и download(), но оба ошибку выдают.

return response()->streamDownload(function () {
           echo file_get_contents($link);
       }, basename($link));

тоже выдает ошибку, но уже другую: "This site can’t be reached".
источник

zN

zVlad Nesquik in Laravel Pro
А зачем файл через вай сервер передавать? Это лишняя нагрузка.
А вобще когда то делал так: скачал файл насервер и потом отдавал пользователям. Удалял его не сразу. Это типо кеширования. Если частотзапрашивается файл, то его и храню у себя. Через несколько дней не обращений - удаляю.
источник

МК

Мирко Крокоп... in Laravel Pro
Файлы хранятся на s3, но хочу управлять доступом, поэтому, пользователь получает ссылки на мой сервис, а уже отсюда отдаю файл с s3.  При этом хотелось бы обойтись без доп. системы управления файлами (следить, чтобы старые удалялись).

Пока склоняюсь к варианту exit(readfile($link)). Он и файл отдаёт успешно и на оставляет копию на самом сайте. Боюсь, только на ревью получу по шапке за «не Laravel way” )
Поэтому, круто было бы обнаружить нечего похожее в самом фреймворке.
источник

zN

zVlad Nesquik in Laravel Pro
Readfile не увлекайся. Если музыку отдавать, то еще можно (т.е. до 10мб) а дальше не желательно. Если фильмы, то не используй такое решение.
источник

zN

zVlad Nesquik in Laravel Pro
Конечно,если выделить 32 ядерный сервер с 64 озу, то можно и филтмы отдавать :) Но зачем платить за сервер, если это того ниаак не стоит)))
источник

МК

Мирко Крокоп... in Laravel Pro
Не, не, у нас тут текстовые файлы до 5 мегабайт. На оперативку нагрузки большой не должно быть.

А я правильно понимаю, что есть только два варианта:
- жертвовать оперативной памятью и отдавать с помощью readfile()
И
- выкачивать предварительно файлы в проект и отдавать уже оттуда, что потребует писать доп. систему удаления устаревших файлов и прочее?
источник

Г

Глеб in Laravel Pro
Здравствуйте, у меня есть такая проблема. Мне нужно взять до 200 отношений каждой модели CustomField, но выходит так, что там 2 модели всего, и в первую идет 200, а во вторую 0. Если убрать take(200), то загружаются как надо, но только все данные, а мне нужны 200.
источник

zN

zVlad Nesquik in Laravel Pro
Да. Но с доп системой можно еще разные фишки делать, например, вип пользователям отдачу файлов по скорости не ограничивать. Но в вашем случаи это не нужно. Файлы и так маленькие.
У меня был опыт такой. Отдача музыки. Сначала через readfile отдавал, а потом уже переделал под закачку на свой сервер. Ресурсов много економилось. Суточная посещаемость сайта была 8-10к. В пиках сидело и качало около 200-300 чел.
источник

EG

Egor Gruzdev in Laravel Pro
Берешь вот это и голова про кэш не болит:

https://flysystem.thephpleague.com/v1/docs/advanced/caching/
источник

AP

Aleksandr Pinchuk in Laravel Pro
А почему нельзя сделать все файлы на с3 не публичными , а пользователю просто отдавать временную ссылку на файл, которая даст скачать файл по ней только один раз, у Амазона есть замечательное СДК для этого 🤷‍♂️😅
источник

МК

Мирко Крокоп... in Laravel Pro
У нас не Амазон, но идея отличная. Спасибо! Посмотрю, есть ли у нашего S3 нечто подобное.
источник

AP

Aleksandr Pinchuk in Laravel Pro
Ясно, на если учесть что все бакеты от других сервисов , типа didgitalocean юзают тулзы написанные под Амазон, только blob azure (говномайкрософт) выделяется в этом плане.
Но гугли тогда что типа такого:
«[название твоего сервиса] presigned url» - думаю найдёшь. И да, качать файл на машину сервера с бакета для того чтобы отдать его клиенту - это крайне плохая идея и не важно на сколько хороший код ты там напишешь и будет ли он Laravelway...
источник

V

Vlad in Laravel Pro
Здраствуйте можете подсказать что за ошибка
источник

V

Vlad in Laravel Pro
источник

EG

Egor Gruzdev in Laravel Pro
php artisan clear
И в файле config/app.php проверь не просан ли данный файл как сервис провайдер.
источник

EG

Egor Gruzdev in Laravel Pro
https://flysystem.thephpleague.com/v1/docs/adapter/aws-s3-v3/

Изучай, Laravel под капотом использует данную либу
источник

V

Vlad in Laravel Pro
не прописан а команда php artisan clear видает ту же ошибку
источник

EG

Egor Gruzdev in Laravel Pro
Тогда могу предложить только одно удалить файл service.php в папке bootstrap
источник

V

Vlad in Laravel Pro
здесь нет такого файла
источник