L'accès $_FILE['tmp_name'] à partir de la UploadedFile classe?
si je imprimer le contenu d'une instance de UploadedFile, c'est ce que je reçois
array (
'opt_image_header' =>
Symfony\Component\HttpFoundation\File\UploadedFile::__set_state(array(
'test' => false,
'originalName' => 'triangle-in-the-mountains.jpg',
'mimeType' => 'image/jpeg',
'size' => 463833,
'error' => 0,
)
Et ce est la façon dont je reçois le fichier téléchargé dans le Contrôleur. Avant de le déplacer, je dois la redimensionner.
foreach($request->files as $uploadedFile){
$ext = '.' . $uploadedFile['opt_image_header']->guessExtension();
$filename = sha1(uniqid(mt_rand(), true)) . $ext;
$uploadedFile['opt_image_header']->move($path . '/images/', $filename);
}
donc il n'y a pas le "tmp_name" que j'avais besoin de redimensionner l'image avant de l'enregistrer.
Ai-je besoin de le lire directement à partir de l' $_FILE tableau?
Vous devez vous connecter pour publier un commentaire.
Utilisation
$uploadedFile->getRealPath()
Symfony\Component\HttpFoundation\File\UploadedFile
s'étendSymfony\Component\HttpFoundation\File\Fichier
, qui s'étend de PHPSplFileInfo
, doncUploadedFile
hérite de toutes les méthodes deSplFileInfo
.Utilisation
$uploadedFile->getRealPath()
pour le chemin absolu vers le fichier. Vous pouvez également utiliser d'autres méthodes, par exemple lesgetFilename()
ougetPathname()
. Pour une liste complète des méthodes disponibles (deSplFileInfo
), voir les docs.De Symfony Fichier de classe ajoute quelques méthodes supplémentaires, tels que
move()
etgetMimeType()
, et ajoute la compatibilité descendante pourgetExtension()
(qui n'était pas disponible avant PHP 5.3.6).UploadedFile
ajoute quelques méthodes supplémentaires sur le dessus de cela, comme legetClientOriginalName()
etgetClientSize()
, qui fournissent les mêmes informations que vous le feriez normalement obtenir de$_FILES['name']
et$_FILES['size']
.Si vous téléchargez un fichier avec Doctrine, jetez un oeil à Documentation Symfony Télécharger un fichier
Si vous voulez télécharger un fichier sans Doctrine, vous pouvez essayer quelque chose comme:
Si il n'y avait aucun problème pour le téléchargement de fichier
move()
lèvera une exceptionMis à JOUR
Selon d'obtenir le chemin d'accès temporaire du fichier téléchargé pour redimensionner l'image, vous pouvez utiliser
getPath()
fonction dans la boucleSi vous vous demandez pourquoi, parce que Symfony Fichier de classe s'étend SplFileInfo
config.yml
alors vous aurez le temp chemin d'accès vers le fichier uploadé