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); } // Fake AFNOR $formAfnor = $this->createForm(AfnorType::class); $formAfnor->handleRequest($request); if ($formAfnor->get('submit')->isClicked()) { $id = $formAfnor->get("id")->getData(); $codeproduct = $formAfnor->get("codeproduct")->getData(); $codequalifications = $formAfnor->get("codequalifications")->getData(); $filesystem = new Filesystem(); $dir = $this->getParameter('kernel.project_dir').'/var/tmp'; $file ="gc,".$id."\n"; $file.="ph\n"; $file.="pj,".$codeproduct."\n"; foreach($codequalifications as $codequalification) { $file.="qa\n"; $file.="qh,".$codequalification."\n"; } $filesystem->dumpFile($dir.'/DEL-'.$id.'.AFN', $file); $return=$this->sftp->uploadFile($dir.'/DEL-'.$id.'.AFN', $folder); } // 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"], 'fakeAfnor'=>in_array("AFNOR",$this->getParameter("fakeFiles")), 'formfolder'=>$formFolder->createView(), 'formfile'=>$formFile->createView(), 'formafnor'=>$formAfnor->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) || 'text/plain' == 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]); } }