File: /var/www/hobbyistgarage/app/Http/Controllers/Admin/MediaController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Models\Media;
class MediaController extends Controller
{
public function index(){
$files = Cache::remember('media', 1440, function() {
$dir = '/var/www/hobbyistgarage/public/media';
$files1 = array_slice(scandir($dir),2);
$pos = array_search('resize.sh', $files1);
unset($files1[$pos]);
$pos = array_search('author', $files1);
unset($files1[$pos]);
$pos = array_search('.gitignore', $files1);
unset($files1[$pos]);
return $files1;
});
$data = $this->paginate($files,15);
return view('admin.media.index', compact('data'));
}
//
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return view("admin.media.create");
}
public function store(Request $request)
{
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.$request->image->getClientOriginalExtension();
$request->image->move(public_path('media'), $imageName);
$image = new Media();
$image->short_url = $imageName;
$image->mtype = "image";
$image->save();
return redirect()->back()->with('success', $imageName.' was uploaded');
}
public function paginate($items, $perPage = 5, $page = null, $options = [])
{
$page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
}