This commit registers new items into admin menu and adds functionality for uploading files.
97 lines
2.3 KiB
PHP
97 lines
2.3 KiB
PHP
<?php
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Requests\UploadFileRequest;
|
|
use App\Http\Requests\UploadImageRequest;
|
|
use App\Models\File;
|
|
use Symfony\Component\HttpFoundation\File\Exception\FileException;
|
|
|
|
class UploadFile extends Controller
|
|
{
|
|
/**
|
|
* @var File
|
|
*/
|
|
private $file;
|
|
|
|
function __construct(File $file)
|
|
{
|
|
parent::__construct();
|
|
$this->file = $file;
|
|
}
|
|
|
|
public function getFile()
|
|
{
|
|
return view('admin/fileManager.newFile');
|
|
}
|
|
|
|
public function getImage()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Uploads any file
|
|
*
|
|
* @param UploadFileRequest $request
|
|
*
|
|
* @return \Illuminate\Http\RedirectResponse
|
|
*/
|
|
public function postFile(UploadFileRequest $request)
|
|
{
|
|
if (!$request->hasFile('file')) {
|
|
return $this->invalidUpload('noFileSpecified');
|
|
}
|
|
|
|
try {
|
|
$uploadedFile = $this->file->upload($request->file('file'), $request);
|
|
|
|
// we do not want to redirect
|
|
if ($request->ajax()) {
|
|
return $this->jsonResponse($uploadedFile);
|
|
}
|
|
|
|
// upload was not performed via ajax, redirect user
|
|
return redirect()
|
|
->route('upload.file')
|
|
->with('success', trans('admin/fileManager.uploadSuccessfull'));
|
|
} catch (FileException $e) {
|
|
return $this->invalidUpload('invalidFile');
|
|
}
|
|
}
|
|
|
|
protected function invalidUpload($message)
|
|
{
|
|
return redirect()
|
|
->route('upload.file')
|
|
->with('error', trans('admin/fileManager.' . $message));
|
|
}
|
|
|
|
/**
|
|
* Uploads only images
|
|
*
|
|
* @param UploadImageRequest $request
|
|
*/
|
|
public function postImage(UploadImageRequest $request)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Send response about uploaded file as JSON
|
|
*
|
|
* @param $uploadedFile
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
private function jsonResponse($uploadedFile)
|
|
{
|
|
$filename = $uploadedFile['file']->getFilename();
|
|
$url = config('app.upload_path') . DIRECTORY_SEPARATOR . $filename;
|
|
|
|
$data = [
|
|
'filename' => $filename,
|
|
'url' => $url,
|
|
'id' => $uploadedFile['id']
|
|
];
|
|
|
|
return response()->json($data);
|
|
}
|
|
} |