upload fichiers

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 fichiers

Re: upload fichiers

par moogli » 22 mars 2012, 18:33

Je suis loin d'être calé en JS mais :
- le formulaire est generé par JAVASCRIPT, c'est du moins ce que montée ton code JS !
- php n'a rien a voir avec Javascript
- tu sais que le code php fonctionne vue que tu a fait des upload, à priori correct, via firefox.

À faire
- coder le formulaire complet en dure et voir s'il fonctionne sur tout les navigateurs (sans toucher au code php). Tu pourra ainsi valider le principe de fonctionnement et valider les fioritures après.
- debugger le JS pour qu'il fonctionne avec IE. Qui par essence ne fait que ce qu'il souhaite et de préférence pas. Olmert les autres.

Tu peux utiliser une extension comme firebug (ou la console du web de chrome) pour voir. E Ue fait exactement le JS (chrome permet même de le debugage avec des points d'arrêts !).
Use et abusé de la fonction var_dump et pas seulement sur $_FILES, (à fait sur GET et post aussi)
Je te conseillerais aussi d'utiliser l'extension xdebug qui, bien configurées, pourra te montrer "le scope" de variable.

Au passage tu n'a pas de balise form dans ton code, copier collé foireux ? Si ce n'est pas le cas peut être que simplement c'est IE qui ne fait pas n'importe quoi :mrgreen:

@+

Re: upload fichiers

par AB » 22 mars 2012, 17:39

Désolé, mais serais tu me dire comment créer mon input avec une balise fermé dynamiquement ?

nouveauInputFile('avecBo'+Centre, 'avecBo'+Centre, 'file', 'fCsv', 'formeFile');

function nouveauInputFile(id, nom, typebal, zone, cName)
{
var zoneFile = document.getElementById(zone);
var nFile = document.createElement('input');
nFile.type = typebal;
nFile.id = id;
nFile.name = nom;
nFile.className = cName
zoneFile.appendChild(nFile);
}
Pour donner des attributs essaies avec setAttribute()

Sinon je vois que tu utilises LOAD DATA INFILE. Faits attention car si cela marche en local il est peut probable que cela fonctionne en distant sur un serveur mutualisé car il faut avoir le droit mysql d'écriture sur les fichiers.

Re: upload fichiers

par rolly2520 » 22 mars 2012, 16:48

Oui effectivement il y a un problème, j'ai passé mon code dans le W3C, il pointe bien sur les balise input et br qui ne sont pas fermé.

Le probleme est comment générer un <input /> en JS avec Var nFile = document.createElement('input');

Re: upload fichiers

par Mazarini » 22 mars 2012, 16:20

D'après ce que je vois, il y a un problème dans le html que tu montres dans le premier message en utilisant http://validator.w3.org/ tu peux voir les problèmes.

Re: upload fichiers

par rolly2520 » 22 mars 2012, 15:55

Désolé, mais serais tu me dire comment créer mon input avec une balise fermé dynamiquement ?

nouveauInputFile('avecBo'+Centre, 'avecBo'+Centre, 'file', 'fCsv', 'formeFile');

function nouveauInputFile(id, nom, typebal, zone, cName)
{
var zoneFile = document.getElementById(zone);
var nFile = document.createElement('input');
nFile.type = typebal;
nFile.id = id;
nFile.name = nom;
nFile.className = cName
zoneFile.appendChild(nFile);
}

Re: upload fichiers

par Mazarini » 22 mars 2012, 14:59

Tu as choisi XHTML comme type de document. Il faut donc fermer les balises input (ainsi que les autres).
Pas sur que ca explique ton problème, mais c'est à vérifier.

Re: upload fichiers

par rolly2520 » 22 mars 2012, 13:12

Voilà ce que contient $_FILES :

sous IE : array(0) { }

sous FireFox:
array(12) { ["avecBo021"]=> array(5) { ["name"]=> string(10) "Query1.csv" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(58) "C:\Users\Public\applications\EasyPHP5.2.10\tmp\phpAC80.tmp" ["error"]=> int(0) ["size"]=> int(424) }

C'est vraiment allucinant, c'est bien le meme script sauf que sous IE mon name "avecBo021" n'existe pas !

Re: upload fichiers

par Mazarini » 22 mars 2012, 12:56

Je te conseille d'ajouter en début de script :
var_dump($_FILES);
Ca te permettra de voir ce que contient $_FILES et d'adapter les index de ce tableau.
(par habitude, j'utilise les mêmes valeurs pour id et name)

Re: upload fichiers

par rolly2520 » 22 mars 2012, 12:25

Voici le code erreur :

Notice: Undefined index: avecBo021 in C:\Users\Public\applications\EasyPHP5.2.10\www\Acc_Abs\PHP\importCsv.php on line 8

Notice: Undefined index: avecBo021 in C:\Users\Public\applications\EasyPHP5.2.10\www\Acc_Abs\PHP\importCsv.php on line 9
File 'C:\Users\Public\APPLIC~1\EASYPH~1.10\mysql\data\oscar\' not found (Errcode: 2)


Par contre je vois pas pourquoi cela viendrait du JS, vu qu'il ne sert a générer le code HTML?

Re: upload fichiers

par Mazarini » 22 mars 2012, 12:15

Reste le "ca ne marche pas" assez peu explicite.
Détail un peu ce qui se passe, ce qui devrait se passer et ce que tu fais.
Moogli pourra alors peut être voir quelque chose parce que moi et le javascript...

Re: upload fichiers

par rolly2520 » 22 mars 2012, 11:36

Voici en parti mon code HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="no-cache" http-equiv="Pragma">
<meta content="no-cache, must-revalidate" http-equiv="Cache-Control">
<meta content="0" http-equiv="Expires">
<title>Releve du Jour</title>
<script src="Javascript/Requete_Export_Text.js" type="text/javascript" language="javascript">
<link href="CSS/style.css" type="text/css" rel="stylesheet">
</head>
<body id="corp">
Inscrire la date de la veille (AAAA-MM-JJ):
<br>
<br>
<input id="date_Rel" type="text" value="2011-04-01" name="date_Rel">
<br>
<br>
<input id="Csv" type="button" onclick="cEstParti('021')" value="Generer les Csv">
<div id="Csv2">
<div id="Csv3">
<form id="fCsv" method="post" enctype="multipart/form-data" action="/Acc_Abs/PHP/importCsv.php">
<input id="csvFileBo021" class="formeFile" type="file" name="avecBo021">
<input id="csvFilesansBo021" class="formeFile" type="file" name="avecssBo021">
<input id="csvFileBo022" class="formeFile" type="file" name="avecBo022">
<input id="csvFilesansBo022" class="formeFile" type="file" name="avecssBo022">
<input id="csvFileBo023" class="formeFile" type="file" name="avecBo023">
<input id="csvFilesansBo023" class="formeFile" type="file" name="avecssBo023">
<input id="csvFileBo024" class="formeFile" type="file" name="avecBo024">
<input id="csvFilesansBo024" class="formeFile" type="file" name="avecssBo024">
<input id="csvFileBo025" class="formeFile" type="file" name="avecBo025">
<input id="csvFilesansBo025" class="formeFile" type="file" name="avecssBo025">
<input id="csvFileBo026" class="formeFile" type="file" name="avecBo026">
<input id="csvFilesansBo026" class="formeFile" type="file" name="avecssBo026">
<input id="envoyerBo" type="submit">
</form>
</div>
</body>
</html>

Re: upload fichiers

par moogli » 21 mars 2012, 19:02

Salut,

Vu l'étendu du code html, et le ça marche pas peux significatif je dirais qu'il s'agit tas de JS qui ne fait pas sont travail ?

Dans cas rien a voir avec c'est un problème du à la non normalisation du JS dans les navigateurs.

@+

upload fichiers

par rolly2520 » 21 mars 2012, 17:19

Bonjour,

Le code suivant fonctionne avec FireFox et pas avec IE ?
Est ce que qq a une idée ?
<form id="fCsv" method="post" enctype="multipart/form-data" action="/Acc_Abs/PHP/importCsv.php"></form>
<?php
include "connexion.php";
//Connection à la base
$db=connect("localhost","root","","oscar");

for($x=1;$x<7;$x++){
		if (!$_FILES['avecBo02'.$x]['error']== UPLOAD_ERR_NO_FILE){
				$chemin=$_FILES["avecBo02".$x]['tmp_name'];
				//Remplace les antislash du chemin du fichier téléchargé par des slash
				$cheminfinal=str_replace('\\','/',$chemin);
				//editionde la requete
				$requete="LOAD DATA INFILE '$cheminfinal' INTO TABLE `accabsbo` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
				//exécute la requête SQL
				$reponse=mysql_query($requete,$db) or die (mysql_error());
			
		}//else{echo 'le fichier 02'.$x.' n\'existe pas';}
}
for($y=1;$y<7;$y++){
	
		if (!$_FILES["avecssBo02".$y]['error']== UPLOAD_ERR_NO_FILE){
				$chemin=$_FILES["avecssBo02".$y]['tmp_name'];
				//Remplace les antislash du chemin du fichier téléchargé par des slash
				$cheminfinal=str_replace('\\','/',$chemin);
				//editionde la requete
				$requete="LOAD DATA INFILE '$cheminfinal' INTO TABLE `accabsssbo` FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
				//exécute la requête SQL
				$reponse=mysql_query($requete,$db) or die (mysql_error());
			
		}//else{echo 'le fichier 02'.$x.' n\'existe pas';}
}

?>