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 12/06/2007, 19h06   #1
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
Par défaut [Upload] problème lors d'un upload

Bonjour tout le monde. Je sais que le sujet a été abordé plein de fois mais j'ai beau chercher sur le net mon script ne marche pas.

Comme le nom du sujet l'indique j'aimerais uploader un fichier.

Voici mon script:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$file = $_FILES['Image'];
if (move_uploaded_file($file['tmp_name'], "C:\test.jpg"))
	   {
		   // uploaded ok
		   //save the file name as the logo url for the sponsor
		   $sponsor_data->m_logo_url = $oDBAccess->setValidString($name);
		   $result = $oDBAccess->updateSponsor($sponsor_data);
 
	   }
	   else
	   {
		   // upload failed
		   $result = false;
	   }
Et rien à faire ça ne marche pas:

voici le résultat de quelques fonctions que j'ai essayé:

Code :
is_uploaded_file($file['tmp_name']) -> vrai
Code :
file_exists($file['tmp_name']) -> renvoi faux je ne sais pas trop pourquoi.
Code X :
1
2
3
4
5
6
7
8
9
print_r ($file):
Array
(
    [name] => 46.JPG
    [type] => image/jpeg
    [tmp_name] => C:\WINDOWS\TEMP\php68.tmp
    [error] => 0
    [size] => 30632
)

Si quelqu'un peut m'aider

ps: désolé pour les accents mais je suis sur un clavier qwerty
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 19h20   #2
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
et ton formulaire il ressemble à quoi?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 19h25   #3
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
Par défaut le formulaire

Code HTML :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<form name="upload" method="post" action="act_upload_file.php" enctype="multipart/form-data">
<br>
	<table border="0" cellpadding="0" cellspacing="0" align="center" width="90%">
		<tr><td colspan="2"><h3>Upload New Sponsor Logo</h3></td></tr>
		<tr>
			<td class="Bold" width="10%">Logo:</td> 
			<td  colspan="3" width="90%">
				<input type="file" name="Image" /> 
				<input type="submit" value="Upload" /> 
			</td>		
		</tr>
		<tr><td colspan="2" height="10">&nbsp;</td></tr>
		<tr>
			<td colspan="2" align="right">
				<input type="hidden" name="id" value="<?php echo $id; ?>" />
				<input type="button" name="btnBack" value="Back" onclick="javascript: history.back(-1);" />
			</td>
		</tr>	
	</table>
</form>
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 19h42   #4
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Je te laisse mon script d'upload
à toi de prendre ce que tu as de besoin
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
 
//Si il y a un fichier d'envoyé et que le fichier est plus petit que 20Mo
if(isset($_FILES['fichier']) && $_FILES['fichier']['size'] <= 20971520){  
	$tmp_file = $_FILES['fichier']['tmp_name']; //Prend le nom complet du fichier uploader dans le tmp du serveur
	$ext_possible = array('DOC','XLS','PUB','TXT','PDF','BMP','JPG','JPEG'); //extension possible
	$file_destination = basename($_FILES['fichier']['name']); //Sépare le path d'accès et garde seulement le nom du fichier et l'extension..ex: test.txt
	// formatage nom fichier pour éviter les bugs de caractères
	// enlever les accents
	$file_destination = strtr($file_destination,
						 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
						 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');   
	// remplacer les caracteres autres que lettres, chiffres et point par _
	$file_destination = preg_replace('/([^.a-z0-9]+)/i', '_', $file_destination);
 
	// Vérification de fichiers valide
	if(!in_array(strtoupper(substr(strrchr($_FILES['fichier']['name'], '.'), 1)), $ext_possible)){
		$msgProgress = '**Veuillez sélectionner un document de type valide (WORD, EXCEL, PUBLISHER, TEXTE, PDF, PHOTO BMP ou JPEG)** '.$_FILES['fichier']['name'];    
	}
	//On test si le fichier est dans le répertoire déjà
	if(is_file($_SESSION['path_dir'].$file_destination)){
		$msgProgress = '**Le document que vous voulez transférer est déjà dans ce dossier.**<br>Veuillez le renommer autre que : <u><b>'.$_FILES['fichier']['name'].'</b></u>';
	}
	//Test si le fichier est uploadé sur le serveur
	else if(!is_uploaded_file($tmp_file)){
		 $msgProgress = '**Le document est introuvable**'; 
	}
	 // copie du fichier  
	if(!isset($msgProgress)){
		//Essaie de changer le répertoire, car le fichier est uploadé dans le tmp
		//$tmp_file->ancien path, $_SESSION['path_dir']->path ajusteur, $file_destination->le nom de fichier avec extention
		if(!is_dir($_SESSION['path_dir']) || !move_uploaded_file($tmp_file,  $_SESSION['path_dir'].$file_destination)){  
			$msgProgress = '**Impossible de copier le document dans '.$_SESSION['path_dir'].$file_destination.'**';
			if(!is_dir($_SESSION['path_dir'])){
				$msgProgress .= '<br>Répertoire inexistant'; 
			}
		}
		else{									
			$msgSucces = '<font color="green" face="Times New Roman, Times, serif"><b>**Le document a été transfèré avec succès dans le répertoire <br>'.$_SESSION['path_dir'].$file_destination.'**<br></b></font>';
		}
	}
}
else if(isset($_FILES['fichier']) && $_FILES['fichier']['size'] > 20971520){
	$msgProgress = '** Le document que vous voulez transférer est trop volumineux (20Mo+), contactez votre administrateur réseau **';
}
Le formuliare est correct
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 19h53   #5
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
Par défaut ...

merci pour ton aide mais j'en ai deja essaye des tas des scripts comme le tien et ca marche jamais.

Penses-tu que cela peut ne pas venir du programme mais de la config du serveur ?
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 19h55   #6
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
c'est ton serveur ou tu es chez un hébergeur?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h01   #7
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
c'est le serveur de la boite ou je fais mon stage
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h14   #8
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
pourtant tu ne devrais pas avoir trop de probleme
ton code
t'as essayé de mettre des echo pour voir si ca rentre dans tes conditions?
ton script d'upload est une page appart de ton formulaire?
car la config par défaut permet le upload de petit fichier?
ton fichier que t'esaie d'uploadé c'est un gris fichier ou un petit ex: txt?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h26   #9
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
Oui j'ai teste avec des echos. C'est juste le move_uploaded_file() qui renvoie false et je ne sais pas pourquoi.

mon script d'upload est bien une page a part du formulaire.

j'essaye d uploader des images (entre 10 et 20Mo) mais voici la config de mon serveur:

file_uploads On
post_max_size 48M
upload_max_filesize 32M

Donc normalement ca devrait pas poser de souci
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h32   #10
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
precision ce n'est pas des Mo mais des Ko pour les photos
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h40   #11
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Citation:
Il existe dans le fichier de configuration php.ini trois directives qui limitent la taille des fichiers que le serveur est capable de charger depuis le client :
upload_max_filesize fixe la taille maximum des fichiers chargés par les méthodes POST et PUT
post_max_size (supérieur à upload_max_filesize) fixe la taille maximum des fichiers chargés par la méthode POST
memory_limit (supérieur à post_max_size) fixe la taille de la mémoire du script
qui s'expriment en octets.


De plus, côté client, le formulaire HTML peut contenir le champ caché (input type=hidden) suivant : MAX_FILE_SIZE qui s'exprime lui aussi en octets. Ce dernier interdit au navigateur d'envoyer au serveur un fichier plus gros que MAX_FILE_SIZE octets.


Il existe enfin la directive max_input_time qui définit le temps maximal, en secondes, au script pour recevoir les données ; cela inclut le téléchargement du fichier. Pour de multiples fichiers, ou de gros fichiers, ou pour les utilisateurs sur de faibles connexions, la valeur par défaut de 60 secondes peut être dépassée.


Dans le cas où vous n'avez pas accès au php.ini, optez pour une connexion FTP...
reférence
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 20h49   #12
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
J'ai deja vu cette page. Elle est mm actuellememt ouverte ds mon firefox....
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 21h00   #13
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Dans ce cas
le probleme doit certainement venir de l'utilisation de la méthode
ton chemin d'accès à ta photo est surment mauvais
Code :
1
2
3
 
$file = $_FILES['Image'];
if (move_uploaded_file($file['tmp_name'], "C:\test.jpg"))
essaie avec un front slash
Code :
1
2
3
 
 
if (move_uploaded_file($_FILES['Image']['tmp_name'], "C:/test.jpg"))
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 21h09   #14
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
non j ai essaye ca marche pas non plus. Je viens d envoyer un mail au wbmaster pour savoir si l application a le d'ecrire dans le dossier.

Si ca se trouve c'est peut etre ca le probleme

Je te tiens au courant de sa reponse.

Mais sinon encore merci pour ton aide
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 21h19   #15
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
bon je n avais pas les droits d ecriture sur le dossier ce qui etait embettant. Du coup maintenant j arrive a copier un fichier dans le repertoire mais le move_uploaded_file ne marche tjs pas. Je vois si j'ai les droits de lecture dur le dossier temporaire maitenant ( je vais peut etre reussir a m en sortir un jour)
Kuroro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 21h46   #16
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 72
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 72
Points : 29
Points : 29
comment perdre 4h de boulot facilement...... se faire emmer*** par des droits d'acces.

comme tu l'as compris l'erreur venait des restrictions de droits. Maintenant ca marche nikel.

Merci encore pour ton aide ozzmax. Je te dois une faveur maintenant
Kuroro 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 20h21.


 
 
 
 
Partenaires

Hébergement Web