in Laravel 8 i was tried to show pdf file uploaded in storage folder, and i got storage’s server IP address could not be found. i want to uploade pdf file and show it on browser without download it i used controlle function store to upload and show function to show pdf file
<?php
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\App;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Pdf;
class PdfController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
protected function authenticated(Request $request, $user)
{
if ( $user->isAdmin() ) {// do your magic here
return redirect()->route('pdfs');
}
return redirect('/home');
}
public function __construct()
{
$this->middleware([
'auth:sanctum',
config('jetstream.auth_session'),
'verified'
])->except(['show']);
}
public function index()
{
$pdfs = Pdf::latest()->paginate(5);
return view('pdfs.index',compact('pdfs'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('pdfs.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'file' => 'required|mimes:pdf|max:2048',
]);
$fileModel = new pdf();
$pdf = $request->file;
$fileName = time() .'.pdf';
$filePath = $pdf->storeAs('uploads', $fileName, 'public');
$fileModel->name = $fileName;
$fileModel->file ='/storage/' . $filePath;
$fileModel->save();
return redirect()->route('pdfs.index')
->with('success','File has been uploaded.')
->with('pdf', $fileName);
}
/**
* Display the specified resource.
*
* @param \App\Models\Pdf $pdf
* @return \Illuminate\Http\Response
*/
public function show($ip)
{
$fileModel = Pdf::find($ip);
return view('pdfs.show', compact('fileModel'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Pdf $pdf
* @return \Illuminate\Http\Response
*/
public function edit(Pdf $pdf)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Pdf $pdf
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Pdf $pdf)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Pdf $pdf
* @return \Illuminate\Http\Response
*/
public function destroy(Pdf $pdf)
{
$pdf->delete();
return redirect()->route('pdfs.index')
->with('success','PDF deleted successfully');
}
}
this is my controller
@extends('pdfs.layout')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2> Show PDF</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('pdfs.index') }}"> Back</a>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
{{ $fileModel->name }}
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<iframe src="/{{ $fileModel->file }}" frameborder="0"></iframe>
</div>
</div>
</div>
@endsection
and this is show.blade.php