<?php
namespace App\Http\Controllers;
use App\File;
use App\Http\Requests\SaveFilePostRequest;
use Illuminate\Contracts\Hashing\Hasher;
use Illuminate\Support\Facades\Response;
class HomeController extends Controller
{
protected $hash;
public function __construct( Hasher $hash)
{
$this->hash = $hash;
}
public function index(){
return view('home');
}
public function saveFile(SaveFilePostRequest $request){
$uploadsDir = $_SERVER['DOCUMENT_ROOT'] . '/public/uploads/';
if(!file_exists($uploadsDir . date('Y'))){
mkdir($uploadsDir . date('Y'));
}
if(!file_exists($uploadsDir . date('Y') . '/' . date('m'))){
mkdir($uploadsDir . date('Y') . '/' . date('m'));
}
$file = $request->file('file');
$hashName = $this->hash->make($file->getClientOriginalName());
$file->move($uploadsDir . date('Y') . '/' . date('m') . '/', $hashName);
$file = File::create([
'name' => $file->getClientOriginalName(),
'size' => $file->getClientSize(),
'path' => $uploadsDir . date('Y') . '/' . date('m') . '/' . $hashName]);
return redirect('file/' . strval($file->id));
}
public function file($id){
$file = File::find($id);
return view('file', ['file' => $file]);
}
public function download($id){
$file = File::find($id);
return Response::download($file->path, $file->name);
}