Récupérer le chemin physique d'un fichier temporaire PHP
Publié le 25/07/2021 • Actualisé le 25/07/2021
Dans ce bout de code, nous voyons comment récupérer le chemin physique d'un fichier temporaire PHP. Dans ce cas, nous utilisons la fonction tmpfile()
pour le créer. Cette fonction retourne un objet resource. On peut ensuite utiliser la fonction stream_get_meta_data()
pour récupérer toutes les méta-données qui lui sont associées. Dans le cas d'une ressource de type fichier, la clé uri
contient son chemin complet.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet156Trait
{
public function snippet156(): void
{
$tmpFileResource = tmpfile();
if (!\is_resource($tmpFileResource)) {
throw new \RuntimeException('Unable to create a temporary file.');
}
$meta = stream_get_meta_data($tmpFileResource);
$path = $meta['uri'];
// Here, we are sure the uri key if the $path variable is defined and contains
// a string that's why PHPStan throws a warning if we do this kind of test
// if (!is_string($path)) {
// 29 Call to function is_string() with string will always evaluate to true.
// Excellent!
echo pathinfo($path, PATHINFO_FILENAME); // avoid using pathinfo($path)['filename']
fclose($tmpFileResource);
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Snippet aléatoire