#php #laravel
#php #laravel
Вопрос:
Я загружаю свой проект на хост. Я загрузил изображение, и изображение сохраняется в базе данных. И изображение не отображалось хорошо, но оно также отображалось на моем локальном хосте.
web.php
use IlluminateSupportFacadesArtisan;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesRoute;
Auth::routes();
Route::get('/link', function(){
return Artisan::call('storage:link');
});
Контроллер
public function update(Request $request)
{
$user = auth()->user();
$path = $user->image ?? null;
if ($request->hasFile('image'))
{
$file = $request->file('image');
$nane = time();
$extension = $file->getClientOriginalExtension();
$fileName = $nane . '.' . $extension;
$path = $file->storeAs('images/users', $fileName, 'public');
}
$user->image = $path;
}
Изображение сохраняется в базе данных.
Изображение загружено в папку storage / app / public / images / users.
Изображение не загружало public / images / users.
Комментарии:
1. Есть ли у вас символическая ссылка из хранилища / приложения / общедоступной в общедоступную / хранилище? laravel.com/docs/8.x/filesystem#the-public-disk
2. Да, я запустил
php artisan storage:link
свой локальный хост, затем загрузил3. Вы должны снова запустить
php artisan storage:link
на сервере4. Как? Route::get(‘/link’, function(){ return Artisan::call(‘storage:link’); });
5. У вас нет доступа к терминалу на сервере? Вы должны запустить его через терминал. Если у вас нет доступа к терминалу, вы можете попробовать использовать маршрут, как указано в комментарии выше
Ответ №1:
У вас есть доступ к серверу по ssh? Если нет, вы можете написать так в своем маршруте :
Route::get('/foo', function () {
Artisan::call('storage:link');
});
Он сгенерирует символическую ссылку на ваш public_html, извините за мой плохой английский