This commit merges list of all uploaded files and created directories into one page. It also modifies way of uploading files. Special page for uploading files was removed (because of no support for directories) and files can be uploaded only via overview.
79 lines
2.0 KiB
PHP
79 lines
2.0 KiB
PHP
<?php
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Requests\UploadFileRequest;
|
|
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;
|
|
}
|
|
|
|
|
|
/**
|
|
* 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.overview', ['directory' => $request->directoryId])
|
|
->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));
|
|
}
|
|
|
|
/**
|
|
* 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);
|
|
}
|
|
} |