upload et lecture d'un fichier xml

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : upload et lecture d'un fichier xml

par Victor BRITO » 16 nov. 2007, 13:01

Alors... inscris-toi !!! ;)
Euh, il est inscrit, sauf qu'il a oublié de se connecter. :P

par zeus » 16 nov. 2007, 11:10

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par Invité » 16 nov. 2007, 08:07

merci ca marche.

par Victor BRITO » 16 nov. 2007, 00:56

Tu n'as toujours pas compris. :roll:

Définit $path comme suit :
$path = $destination_dir.DIRECTORY_SEPARATOR.$destination_file;
et dis-moi ce qui se passe alors.

par Invité » 16 nov. 2007, 00:24

J'ai defini une variable
$Fname = $_FILES['fichierXML']['name'];
avant de faire le move_upload_file et la declaration du path devient:
$path     = 'xml/'.$Fname;
Et ca marche toujours pas.

Merci pour ta patience

par Victor BRITO » 15 nov. 2007, 21:53

Tu ne peux pas réutiliser $_FILES pour définir $path.

par Invité » 15 nov. 2007, 21:23

J'ai modifie et ca marche toujours pas. Je n'y comprend rien.
Je mets le code modifie.
if (move_uploaded_file($_FILES['fichierXML']['tmp_name'],$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) 
				 {		
					
							var_dump($_FILES);
							
							$path     = 'xml/'.$_FILES['fichierXML']['name'];
							echo "boucle avant file_exists ";
							echo "<br>File is uploaded $path";
							if(file_exists($path))
							{
								$i        = 2;
								echo "<br>File is existe";
								$fonction = new fonction();
								$con      = new connection("xxxxxx");
								echo $path;
								$xml = simplexml_load_file($path);
								var_dump($xml);

Il rentre dans le if du move_upload_file, mais pas dans file existe. Quand je vais sur mon serveur dans le dossier xml. le fichier existe vraiment. L'arborescence de mes fichiers sur le serveur est comme ceci:

dossier xml
script php

donc pour lire le fichier je dois utiliser un path comme ceci xml/nom du fichier.

j'affiche le resultat du var_dump ainsi que les different echo.
array(1) { ["fichierXML"]=> array(5) { ["name"]=> string(27) "Anuga_Visitor_Form_Uri2.xml" ["type"]=> string(17) "application/x-xml" ["tmp_name"]=> string(18) "/var/tmp/phpEbUqsY" ["error"]=> int(0) ["size"]=> int(2594) } }

boucle avant file_exists
File is uploaded
xml/Anuga_Visitor_Form_Uri2.xml
et quand je vais sur mon serveur le fichier Anuga_Visitor_Form_Uri2.xml est la

par damaskinos » 15 nov. 2007, 20:19

ok, je comprend. Je vais l'enlever. Et voir

par Victor BRITO » 15 nov. 2007, 20:02

Non seulement move_uploaded_file() fait le boulot d'is_uploaded_file(), mais il t'enregistre le fichier uploadé à l'emplacement indiqué par son second argument.

De deux choses l'une : soit tu utilises is_uploaded_file() et tu écris quelques lignes de code supplémentaires pour enregistrer le fichier uploadé (mais sans utiliser move_uploaded_file()), soit tu utilises move_uploaded_file(). Mais pas les deux à la fois.

Autrement dit, si tu utilises move_uploaded_file() et qu'ensuite tu utilises un is_uploaded_file() pour vérifier que le fichier est uploadé, il est normal que cette dernière fonction ne trouve rien, puisque le fichier a été enregistré et que, par conséquent, il ne se trouve plus dans le répertoire temporaire utilisé pour l'upload.

par damaskinos » 15 nov. 2007, 19:59

is_uploaded_file fait juste verifier si le fichier a ete uploadé. Et c'est ca je comprend pas si move_upload_file return true is_uploaded_file devrait retourner true aussi. Non?

par Victor BRITO » 15 nov. 2007, 19:33

Si tu utilises move_uploaded_file(), il est inutile d'utiliser is_uploaded_file().

par damaskinos » 15 nov. 2007, 18:37

Avec les nouvaux testes j'ai placé, je rentre dans la premiere boucle
if(move_uploaded_file)
J'ai le premier echo
boucle avant is_uploaded_file
Après je rentre pas dans la deuxieme booucle
if(is_uploaded_file($_FILES['fichierXML']['tmp_name'])) 
Pourtant je devrais parce que je rentre dans la premiere boucle
move_uploaded_file

par Victor BRITO » 15 nov. 2007, 18:17

Vérifie la valeur de $path dans ton simplexml_load_file().

par damaskinos » 15 nov. 2007, 18:07

je viens de rajouter les test suivant

 
 
 if (move_uploaded_file($_FILES['fichierXML']['tmp_name'],$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) 
				 {		
					echo "boucle avant is_uploaded_file";
					if(is_uploaded_file($_FILES['fichierXML']['tmp_name']))
					{
							var_dump($_FILES);
							echo "<br>File is uploaded";
							$path     = 'xml/'.$_FILES['fichierXML']['tmp_name'];
							echo "boucle avant file_exists ";
							if(file_exists($path))
							{
								$i        = 2;
								echo "<br>File is existe";
								$fonction = new fonction();
								$con      = new connection("xxxxx");
								echo $path;
								$xml = simplexml_load_file($path);
								var_dump($xml);
 
 
J'ai mis des echo un peu partout pour voir ou je bloque. Je rentre bien dans la boucle
 if (move_uploaded_file($_FILES['fichierXML']['tmp_name'],$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) 
				 {	
 
J'ai un echo qui m'affiche
boucle avant is_uploaded_file
et c'est tout. Quand je vais sur le serveur et que je regarde dans mon dossier xml, le fichier est pourtant la. Une idée.

Merci encore.

par damaskinos » 15 nov. 2007, 17:40

salut Victor,

si tu as bien lu mon premier message ca laisse sous entendre que simpleXML est belle et bien activé puisque je dis clairement que quand je donne le nom d'un fichier xml etant sur le serveur le script marche parfaitement. Pour la deuxieme question, c 'est la je crois qu'il ya un problème. j'ai l'impression que
if (move_uploaded_file($_FILES['fichierXML']['tmp_name'],$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) 
                 { 
on rentre dans le if quand le fichier a été uploadé, parcontre je crois qu'il y a un petit delais avant qu'il soit sur le serveur. C'est ma question en faite, est-ce que quand je rentre dans le if cela veut dire que le fichier est déjà uploadé sur le serveur ou il est peut-être en cours d'upload. Parceque s'il est encore en cours d'upload, c'est claire que cette ligne ne marchera pas.
$xml = simplexml_load_file($path);
vue qu'il trouvera pas le fichier.