Я пытался позволить пользователям загружать изображения на основе проектов в динамические подпапки. Они могут быть загружены, но они не могут быть получены в веб-интерфейсе. Кажется, что есть проблема с разрешением.
Это Laravel 5.8. Я пробовал через хранилище: ссылка, но пока не работает. Возможно, я делаю что-то не так.
Это моя функция Testupload, она хранит файлы, например, в: storage / app / 35 / image.jpg
public function store($file, $project){
$filepath = $project->id.'/';
if($file){
Storage::disk('local')->put( $filepath .'/image.jpg', File::get($file));
}
}
Это мой маршрут:
Route::get('projectimage/{filename}', [
'uses' => 'projectController@getProjectImage',
'as' => 'getProjectImage'
]);
Вот мой шаблон Blade: Часть:
@if (Storage::disk('local')->has($project->id.'/image.jpg'))
<img src="{{ route('getProjectImage', [$project->id.'/image.jpg'])}}" alt="">
@endif
Вот как получить изображения:
public function getProjectImage($filename){
$file = Storage::disk('local')->get($filename);
return new Response($file, 200);
}
Я не t change any config file, but I did
php artisan storage: link`и попробовал это через «public» вместо «local». Это не сработало. Но это всегда работает без подпапок. Как я могу это исправить?
Я ожидаю получить изображения, отображаемые в FrontEnd. Полученная ссылка: src = "http://myproject.test/projectimage/35/image.jpg"
Теперь у меня есть странный момент ... если я жестко закодирую подпапку, она работает.
$file = Storage::disk('local')->get('60/'.$filename);
Мое решение:
шаблон лезвия:
@if (Storage::disk('local')->has($project->id.'/image.jpg'))
<img src="{{ route('getProjectImage',['filename'=>'image.jpg', 'projectid'=>$project->id])}}" alt="">
@endif
контроллер:
public function getProjectImage($filename, $project_id){
$file = Storage::disk('local')->get($project_id.'/'.$filename);
return new Response($file, 200);
}
Не стесняйтесь улучшать мой код.: *