Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 14h22   #1
Futur Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 18
Points : 18
Par défaut Upload fichier CSV

Bonjour je rencontre un petit souci pour un upload de fichier.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
<html>
<body>
      <!-- Formulaire -->
      <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
      <form method="POST" action="data/eligibilite/uploadcsv.php" enctype="multipart/form-data">
      <!-- Limiter la taille des fichiers à 500Ko -->
      <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
      <fieldset>
      <legend>Envoi de fichiers</legend>
      <!-- champs d'envoi de fichier, de type file -->
      <p><label for="fichierCsv">Photo :</label><input type="file" name="fichierCsv" /></p>
      <!-- bouton d'envoi -->
      <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
      </legend>
      </fieldset>
      </form> </body>
	  </html>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
<?php
 
include ('../../include.php');
 
// Vérification de l'existance d'une session
VerifSession();
 
echo $_FILES['fichierCsv']['tmp_name'];echo'<br>';
echo $_FILES['fichierCsv']['error'];echo'<br>';
if(isset($_FILES['fichierCsv']))
{
    $upload='./csv';
    $temp=$_FILES['fichierCsv']['tmp_name'];
    if(move_uploaded_file($temp, $upload.'/'.$_FILES['fichierCsv']['name']))
        {
            $handle=fopen($upload.'/'.$_FILES['fichierCsv']['name'], 'r');
            while (($line = fgetcsv($handle, 1000, ";")) !== FALSE)
            {
                $i=0;
				while($i<count($line))
				{
				echo $line[$i].' ';
                $i++;
				}
				echo '<br/>';
            }
            fclose($handle);
        }
       else
       {
           echo 'Echec lors de l\'envoie du fichier';
       }
}
 
      ?>
Et voila le retour que j'ai

Code :
1
2
3
4
 
/tmp/php4aNlaW
0
Echec lors de l'envoie du fichier
Que pourrais vérifier afin de comprendre pourquoi mon upload ne se fait pas?
Nheil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 14h54   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Peut-être que l'accès en écriture au répertoire ./csv/ est impossible.

Quels sont ses droits actuels ?
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 15h00   #3
Futur Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 18
Points : 18
Les accès sont correct.
Mais je viens de penser à quelque chose.
Suis-je obligé de déplacer mon fichier pour en afficher son contenu?
Ne puis-je pas directement le traité au moment de l'upload?
Nheil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 15h08   #4
Futur Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 18
Points : 18
J'ai résolu mon souci.
Un problème dans l'accès au fichier.

Merci je passe en résolu
Nheil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h50   #5
Futur Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 18
Points : 18
Je réouvre mon sujet car finalement je me suis caché le problème en travaillant toujours sur le même fichier qui était présent déjà dans mon dossier.

J'ai un formulaire d'upload de fichier avec une vérif javascript:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 
	var contentDemandeurHtml = '<form method="POST" name="formulaire" id="form" action="data/eligibilite/uploadcsv.php" enctype="multipart/form-data">'
		  +'<table>'
		  +'<tr>'
		  +'<td><div style="font-family: Arial;font-size:12px;"> Email : </div></td><td><input type="text" name="email" /></td>'
		  +'</tr><tr>'
          +'<td><div style="font-family: Arial;font-size:12px;">Fichier CSV : </td><td><input type="file" name="fichierCsv" id="csv"/> <a href="include/commun/fichierCSV.csv"><img src="include/images/page_excel.png" title="Fichier CSV type"></a></td>' 
		  +'</tr><tr>'		  
          +'<td></td><td></td><td><input type="button" value="Envoyer votre fichier" onclick="verifier();"/></td>'
		  //+'<td></td><td></td><td><div id="test" name="test" />'
		  +'</tr>'
		  +'<table>'
+'</form>';
 
 
function verifier()
            {
				var email = document.formulaire.email.value;
				var verif = /^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/
				var typemime=document.getElementById('csv').value.split('.');
 
				if(verif.exec(email) == null)
				{
					Ext.Msg.alert('Erreur formulaire', 'Email non valide');
 
				}
                if(typemime.length!=0 && verif.exec(email) != null)
                    {
                        if(typemime[typemime.length-1].toLowerCase()!='csv')
                        {
							Ext.Msg.alert('Erreur formulaire', 'Fichier csv Invalide');
						}
                        else
                        {
                            document.forms[0].submit();
                        }
                    }
            }
Et ensuite je traite les données de mon formulaire en php.
Le but est de récupéré les valeurs de mon fichier csv et de les insérées en base.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
 
<?php
 
include ('../../include.php');
 
// Vérification de l'existance d'une session
VerifSession();
$email = $_POST['email'];
$idtable = uniqid();
$idtable = $email.'|'.$idtable;
// Connexion à la base de donnée
$dbh = ConnectDB();
 
//echo $_FILES('fichierCsv');
 
if(isset($_FILES['fichierCsv']))
{	
	// Récupération du fichier passer en upload dans le formulaire
    $handle=fopen($_FILES['fichierCsv']['name'], 'r');
    while (($line = fgetcsv($handle, 1000, ";")) !== FALSE)
	{
			$tab[0] = $line[1];
			$tab[1] = $line[2];
 
		// CONVERSION LAMBERT
 
		//0)degres-minutes-secondes + orientation (d,m,s,o) en radian
	      $lambda_w = $tab[1] * pi()/180 ;
	      $phi_w =  $tab[0] * pi()/180 ;
 
	      //1) coordonnées géographiques WGS84 (phi_w,lambda_w) en coordonnées cartésiennes WGS84 (X_w,Y_w,Z_w)
	      $a_w = 6378137.0;
	      $b_w = 6356752.314;
	      $e2_w = ($a_w*$a_w-$b_w*$b_w)/($a_w*$a_w);
 
	      //et on a la grande normale de l'ellipsoide WGS84
	      $N = $a_w/sqrt(1-$e2_w*pow(sin($phi_w),2));
 
	      //ainsi on obtient
	      $X_w = $N * cos($phi_w) * cos($lambda_w);
	      $Y_w = $N * cos($phi_w) * sin($lambda_w);
		 $Z_w = $N * (1-$e2_w) * sin($phi_w);
 
	      //2) coordonnées cartésiennes WGS84 (X_w,Y_w,Z_w) en coordonnées cartésiennes NTF (X_n,Y_n,Z_n)
	     $dX = 168.0;
	     $dY = 60.0;
	     $dZ = -320.0;
	     $X_n = $X_w + $dX;
	     $Y_n = $Y_w + $dY;
	     $Z_n = $Z_w + $dZ;
 
	      //3) coordonnées cartésiennes NTF (X_n,Y_n,Z_n) en coordonnées géographiques NTF (phi_n,lambda_n)
	      $a_n = 6378249.2;
	      $b_n = 6356515.0;
	      $e2_n = ($a_n*$a_n-$b_n*$b_n)/($a_n*$a_n);
 
	      //on définit une tolérance de convergence
	      $epsilon = pow(10,-10);
 
	      //puis on amorce une boucle de calcul        
	      $p0=atan($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n)*(1-($a_n*$e2_n)/(sqrt($X_n*$X_n+$Y_n*$Y_n+$Z_n*$Z_n))));
 
	      $p1=atan(($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n))/(1-($a_n*$e2_n*cos($p0))/(sqrt(($X_n*$X_n+$Y_n*$Y_n)*(1-$e2_n*pow(sin($p0),2))))));
 
	      while(!(abs($p1-$p0)<$epsilon)){
	         $p0 = $p1;
	         $p1 = atan(($Z_n/sqrt($X_n*$X_n+$Y_n*$Y_n))/(1-($a_n*$e2_n*cos($p0))/(sqrt(($X_n*$X_n+$Y_n*$Y_n)*(1-$e2_n*pow(sin($p0),2))))));
	       }
 
	       $phi_n = $p1;
	       $lambda_n = atan($Y_n/$X_n);
 
	      //4) coordonnées géographiques NTF (phi_n,lambda_n) en coordonnées projetées en Lambert II étendu (X_l2e, Y_l2e)
	       $n = 0.7289686274;
	       $c = 11745793.39;
	       $Xs = 600000.0;
	       $Ys = 8199695.768;
 
	       $e_n = sqrt($e2_n);
	       $lambda0 = 0.04079234433198;   //correspond à la longitude en radian de Paris (2°20'14.025" E) par rapport à Greenwich
 
	       //puis on calcule la latitude isométrique
	       $L = log(tan(pi()/4 + $phi_n/2) * pow(((1-$e_n*sin($phi_n))/(1+$e_n*sin($phi_n))),($e_n/2)));
 
	       //enfin on projette
	       $X_l2e = $Xs + $c*exp((-$n*$L))*sin($n*($lambda_n-$lambda0));
	       $Y_l2e = $Ys - $c*exp((-$n*$L))*cos($n*($lambda_n-$lambda0));
 
		   $X_l2e = round($X_l2e,2);
		   $Y_l2e = round($Y_l2e,2);
 
		   $tab[0] = $X_l2e;
		   $tab[1] = $Y_l2e;
 
		$id = $line[0];
		$dept = $line[3];
		//requete d'insertion en base
		//$req = "EXEC sp_Extranet_InsertEligCSV '$id','$tab[0]','$tab[1]','$dept','$idtable'";
		// Insertion en base de donnée
		// Execution de la requête
					echo $id;
			echo $tab[0];
			echo $tab[1];
			echo $dept;
			echo $idtable;
		//$sth = $dbh->query($req);
		//$result = $sth->fetchAll(PDO::FETCH_ASSOC);  
	}
	fclose($handle);
}
// Deconnexion de la base de donnees
$dbh = null;
?>
Et je me récupère des erreurs de type :

Code :
1
2
3
 
 
Warning: fopen(eligmasse.csv): failed to open stream: No such file or directory in /srv/www/extranet-dev/data/eligibilite/uploadcsv.php on line 18 Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /srv/www/extranet-dev/data/eligibilite/uploadcsv.php
Nheil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h16.


 
 
 
 
Partenaires

Hébergement Web