IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] problème lors d'un upload


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    is_uploaded_file($file['tmp_name']) -> vrai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_exists($file['tmp_name']) -> renvoi faux je ne sais pas trop pourquoi.
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    et ton formulaire il ressemble à quoi?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut le formulaire
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  4. #4
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    Je te laisse mon script d'upload
    à toi de prendre ce que tu as de besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    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 ?

  6. #6
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    c'est ton serveur ou tu es chez un hébergeur?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    c'est le serveur de la boite ou je fais mon stage

  8. #8
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    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?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    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

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    precision ce n'est pas des Mo mais des Ko pour les photos

  11. #11
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    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

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    J'ai deja vu cette page. Elle est mm actuellememt ouverte ds mon firefox....

  13. #13
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $file = $_FILES['Image'];
    if (move_uploaded_file($file['tmp_name'], "C:\test.jpg"))
    essaie avec un front slash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (move_uploaded_file($_FILES['Image']['tmp_name'], "C:/test.jpg"))

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    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

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    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)

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de l'upload de fichier
    Par teddyalbina dans le forum ASP.NET
    Réponses: 0
    Dernier message: 10/02/2012, 11h05
  2. Problème lors de l'upload d'un fichier
    Par ghir_ana dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2011, 13h53
  3. Problème lors de l'upload d'un fichier
    Par youtpout978 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/07/2011, 15h28
  4. Réponses: 2
    Dernier message: 25/09/2007, 16h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo