Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 03/05/2007, 18h10   #1
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 2
Points : 0
Points : 0
Par défaut [Upload] Problème d'upload lié aux forces du mal

Bonjour, comme l'indique l'intitulé de mon message, j'ai un problème d'ordre "bizarre" qui peut être fera se gausser nombre d'entre vous car celà peut très bien venir de quelques ignorances ou oubli de ma part.
J'ai créé un formulaire (enctype : multipart/form-data) pour pouvoir mettre à jour une rubrique, à l'aide de se formulaire on peut écrire un article avec son titre, mais surtout ajouter à cet article Images (upload), Mp3 (up), vidéos (up) car il s'agit en fait d'un compte-rendu de concert. j'ai à l'aide d'un script javascript, fait en sorte que l'on puisse rajouter autant de mp3 / vidéos / img que l'on veut, car en cliquant sur un simple lien, se clone un champ "<input type="file".." en dessous du précédant, en mettan ajour le "name" à chaque fois bien entendu .
Le tout traité à l'aide de boucles php dans un autre fichier.
Seulement survient un gros problème. Tout se passe bien, si je rajoute par exemple : article + 5images + 1 vidéo + 1 mp3. Mais des que je met plus de 2 mp3 ou 2 vidéo, ou 1mp3 + 2 vidéo ou 2 vidéo + 1 mp3 (les images ne posent aucun probleme) Alors lors de l'envoi du formulaire, plus aucunes variables ($_POST et $_FILES) ne sont transmisent, ce problème ne survient que lorsque je met plus de deux vidéos/mp3 ou lorsque le total des vidéos+mp3s dépasse 2. Ceci est la chose la plus bizarre que j'ai vue, mais peut être la solution est elle très simple. Merci d'avoir lu jusqu'au bout, pardon pour les fautes, et merci pour vos réponses prochaines !
Thalian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 21h47   #2
Membre confirmé
 
Inscription : avril 2007
Messages : 254
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 254
Points : 262
Points : 262
Il va falloir nous montrer la partie pertinente de ton code.
Que la force soit avec toi.
Ouach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 00h49   #3
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 2
Points : 0
Points : 0
D'accord, alors je vais mettre quelques petits bouts pour montrer comment ça marche.

D'abord la fonction javascript mise avant tout, qui permet de créer un nouveau champ "<input type="file" ...>" à l'infini :

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
 
<script language="javascript">
 
			var i=1;
	      function addSelectMp3()
	      {
	        i++;
 
 
	        // On récupère l\'endroit où devra être ajouté la liste
 
	        var divCible = document.getElementById("divCibleMp3");
 
	        // On récupère la liste modèle
 
	        var selModele = document.getElementById("select_modeleMp3");
 
	        // On la clone dans une nouvelle variable
 
	        var nvxSel = selModele.cloneNode(true);
 
	        // (pour la présentation, on crée un retour à la ligne)
 
	        var br = document.createElement("br");
 
	        // On adapte les attributs de la nouvelle liste : nom, id et affichage
 
	        nvxSel.name = "mp3" + i;
	        nvxSel.id = "mp3" + i;
	        nvxSel.style.display = "inline";
 
	        // On ajoute tout ça à l\'emplacement voulu
 
	        divCible.appendChild(nvxSel);
	        divCible.appendChild(br);
	      }
</script>
Puis viens le formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
<form action="./index.php?page=posterConcert" enctype="multipart/form-data" method="post">
 
[...]
 
<input type="file" id="select_modeleMp3" name="mp3" size="30" style="display: none">
<input type="file" name="mp31" size="30"><a href="#" onclick="javascript:addSelectMp3();">&nbsp;Ajouter un autre mp3</a><br>
<div id="divCibleMp3"></div>
 
[...]
 
</form>
je n'ai mis là que la partie interessante du formulaire, à savoir un des champs d'ajout de fichiers, tous les champs ont la même structure pour les imgs / vidéos, seul les NOMS et ID changent, et tous sont associer à une fonction javascript propre (il n'y à pas d'interactions).

On termine avec un bout du traitement php mais il n'y a pas de raison que celà est un inpact quelconque, car le problème est qu'aucune variable ne sort du formulaire si je met plus de 3 mp3 / vid (non-img)

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
 
/*------------------------------------- UPLOAD DES MP3 -------------------------------------------*/
 
		$i=1;
		while ( !empty($_FILES['mp3'. $i]['tmp_name']) )
			{
				$content_dir = './upload/mp3/'; // dossier où sera déplacé le fichier
 
		    $tmp_file = $_FILES['mp3'. $i]['tmp_name'];
 
		    if( !is_uploaded_file($tmp_file) )
		    {
		        exit("Le fichier est introuvable");
		    }
 
		    // on vérifie maintenant l'extension
		    $type_file = $_FILES['mp3'. $i]['type'];
 
 
		     if( !strstr($type_file, 'mpeg') && !strstr($type_file, 'x-aiff') && !strstr($type_file, 'x-wav') )
		    {
		        exit("Le fichier n'est pas un mp3");
		    } 
 
		    // on copie le fichier dans le dossier de destination
		    $name_file = $_FILES['mp3'. $i]['name'];
 
		    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
		    {
		        exit("Impossible de copier le fichier dans $content_dir");
		    }
 
		    $nomfiche = $content_dir . $name_file;
		    $nomf = utf8_encode($nomfiche);
 
                    connexion();
 
		    $sql = "INSERT INTO mediasconc (type, nomc, url)
			     VALUES ('Mp3', '$nomc', '$nomf')";
		    mysql_query($sql) or die("Impossible d'ajouter l'image à la base de donnée");
				$i++;
			}
etc etc pareil pour les images / vidéos.
Je résume : le problème est que : pour 1 mp3 ça marche, pour 2 mp3 ça marche, mais à partir de 3 le formulaire ne transmet plus aucune valeur. Pareil pour les vidéos...
Thalian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 04h20   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 59
Détails du profil
Informations personnelles :
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : janvier 2007
Messages : 59
Points : 33
Points : 33
Envoyer un message via MSN à u115rcu
Salut,
Peut etre alors fais des envois en rafale de deux puisque apparement les forces du mal n ont pas la main mise sur l envoi de deux fichiers mp3 a la fois !
u115rcu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2007, 04h43   #5
Membre expérimenté
 
Inscription : janvier 2007
Messages : 439
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 439
Points : 519
Points : 519
Bonsoir

Peut etre la taille d'upload autorisé par ton serveur est elle limité ^^ et tu arrives a ca limite ^^ c'est d'aillieur fort probable ^^

Cordialement
spawntux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h04.


 
 
 
 
Partenaires

Hébergement Web