каталог для publi c и приватного файла в laravel - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу создать сайт для продажи качественных фотографий, используя Laravel framework. Я хочу показать всем макет фотографии на главном экране. Но оригинальный файл (zip) можно скачать после покупки. Лучше всего поместить файл макета в путь Storage/app/public и файл zip в путь Storage/app/files? Если я это сделаю, я могу получить доступ к файлу макета с помощью php artisan storage:link и отобразить его на главном экране. Но я понятия не имею, как загрузить zip-файл.

Если этот способ хранения файлов и макетов правильный, безопасный и стандартный, пожалуйста, сообщите мне, как получить доступ к zip-файлу. Но если это неправильный путь, подскажите, куда нужно положить файлы и макеты

1 Ответ

1 голос
/ 11 февраля 2020

Если он публикуется c для всех, то нет проблем с тем, чтобы он был опубликован c, поэтому, если бы вы использовали локальный драйвер и хотели бы сделать файлы доступными в папке вашего хранилища, вы бы запустили ремесленника. команда, подобная приведенной ниже

php artisan storage:link

Это обеспечит публичный доступ к файлам как example.com/public/storage/whwhatfile.

Однако для людей, которые имеют Приобретенное изображение необходимо использовать для аутентификации или авторизации, например. если вы хотите, чтобы файлы были доступны только аутентифицированному пользователю, то, возможно, вы можете поместить файлы в хранилище / myViewFile, чтобы убедиться, что файлы в папке не являются общедоступными. Затем, используя контроллер с промежуточным программным обеспечением для аутентификации или маршрут с промежуточным программным обеспечением, вы можете сделать файлы доступными.

Route::get('/storage/files/{file}', 'FilesController@show')->middleware('auth');

, а для загрузки файлов вы можете сделать это методом show, используя laravel ответ на загрузку

return response()->download($pathToFile);
//or
return response()->download($pathToFile, $name, $headers);
//or
return response()->download($pathToFile)->deleteFileAfterSend();
...