Я использую Voyager
в качестве администратора с Laravel
. Я хочу загрузить файл, загруженный из панели администратора. Так что я пометил поле в таблице products
как file
. Проблема в том, что я не могу понять, как извлечь файл, и мне не удалось найти любые документы по этому поводу. Voyager переименует файл и создаст собственную папку. Перед использованием voyager я смог отлично загрузить файл, используя ссылку, используя функцию storage_path.
Вот что я пробовал
HomeController. php
public function download($id)
{
$product = Product::where('id',$id)->firstOrFail();
$down = $product->download()->get();
foreach($down as $item){
$path = storage_path($item->link);
}
return response()->download($path);
}
contentview.blade. php
<form action="{{route('home.download',$product->id)}}" method="GET">
{{csrf_field()}}
<input type="hidden" name="id" value="{{$product->product_id}}">
<input type="hidden" name="name" value="{{$product->name}}">
<input type="hidden" name="price" value="{{$product->price}}">
<button type="submit" class="cart-button card-game-btn align-self-end position-absolute"><i class="fas fa-download"> </i>Download</button>
</form>
РЕДАКТИРОВАТЬ: Насколько я понимаю, Voyager возвращает файл Json, поэтому я пробовал также это , но я не могу избавиться от "попытки получить Trying to get property 'download_link' of non-object
ошибку
public function download($id)
{
$product = Product::where('id',$id)->firstOrFail();
$down = $product->download()->get();
$down = json_decode($down);
foreach($down as $item){
// dd();
$path =json_decode($item->link);
}
// dd($path);
return response()->download($path->download_link);
//dd($down);
}
Кто-нибудь знает, как решить эту проблему?