first commit
This commit is contained in:
0
src/Controller/.gitignore
vendored
Normal file
0
src/Controller/.gitignore
vendored
Normal file
109
src/Controller/HomeController.php
Normal file
109
src/Controller/HomeController.php
Normal file
@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Form\FolderType;
|
||||
use App\Form\FileType;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use App\Service\SftpService;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||
|
||||
class HomeController extends AbstractController
|
||||
{
|
||||
private $sftp;
|
||||
|
||||
public function __construct(SftpService $sftp)
|
||||
{
|
||||
$this->sftp = $sftp;
|
||||
$this->sftp->connect();
|
||||
}
|
||||
|
||||
public function home(Request $request)
|
||||
{
|
||||
$folder=$request->query->get('folder');
|
||||
|
||||
// Crétion de répertoire
|
||||
$formFolder = $this->createForm(FolderType::class);
|
||||
$formFolder->handleRequest($request);
|
||||
if ($formFolder->get('submit')->isClicked() && $formFolder->isValid()) {
|
||||
$name = $formFolder->get("name")->getData();
|
||||
$this->sftp->mkdir($folder."/".$name);
|
||||
}
|
||||
|
||||
// Modification de fichier
|
||||
$formFile = $this->createForm(FileType::class);
|
||||
$formFile->handleRequest($request);
|
||||
if ($formFile->get('submit')->isClicked() && $formFile->isValid()) {
|
||||
$oldname = $formFile->get("oldname")->getData();
|
||||
$name = $formFile->get("name")->getData();
|
||||
$this->sftp->rename($folder."/".$oldname,$folder."/".$name);
|
||||
}
|
||||
|
||||
// Lister les fichiers
|
||||
$ls=$this->sftp->ls($folder);
|
||||
|
||||
// Construire l'arbre des répertoires
|
||||
$tree=[];
|
||||
$tmpparent=explode("/",$folder);
|
||||
foreach($tmpparent as $key => $parent) {
|
||||
$tmp=[
|
||||
"name"=>($parent==""?"Home":$parent),
|
||||
"folder"=>($key==0?"":$tree[$key-1]["folder"]."/".$parent)
|
||||
];
|
||||
array_push($tree,$tmp);
|
||||
}
|
||||
|
||||
// Browse
|
||||
return $this->render('Home/home.html.twig', [
|
||||
'useheader' => true,
|
||||
'usemenu' => false,
|
||||
'usesidebar' => false,
|
||||
'tree' => $tree,
|
||||
'infolder' => $folder,
|
||||
'folders' => $ls["folders"],
|
||||
'files' => $ls["files"],
|
||||
'formfolder'=>$formFolder->createView(),
|
||||
'formfile'=>$formFile->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function download(Request $request)
|
||||
{
|
||||
$file=$request->query->get('file');
|
||||
$tmpfile=$this->sftp->downloadFile($file,"var/tmp/");
|
||||
if(!$tmpfile) {
|
||||
throw new \Exception('Erreur de téléchargement');
|
||||
}
|
||||
|
||||
if (str_starts_with(mime_content_type($tmpfile), 'image/') || 'application/pdf' == mime_content_type($tmpfile)) {
|
||||
$response = new BinaryFileResponse($tmpfile);
|
||||
$response->headers->set('Content-Type', mime_content_type($tmpfile));
|
||||
} else {
|
||||
$response = new BinaryFileResponse($tmpfile);
|
||||
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, basename($tmpfile));
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function upload(Request $request)
|
||||
{
|
||||
$folder=$request->query->get('folder');
|
||||
return $this->render('Home/upload.html.twig', [
|
||||
'folder' => $folder,
|
||||
]);
|
||||
}
|
||||
|
||||
public function delete(Request $request)
|
||||
{
|
||||
$folder=$request->query->get('folder');
|
||||
$file=$request->query->get('file');
|
||||
|
||||
$this->sftp->deleteFile($file);
|
||||
|
||||
return $this->redirectToRoute("app_home",["folder"=>$folder]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user