Probleme sur un script php (upload)

Fermé
asus - 13 janv. 2008 à 14:37
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 - 15 janv. 2008 à 12:48
Bonjour,
une erreur ligne 106

// Ensuite, on copie le fichier uploadé ou bon nous semble.
				$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);


merci
A voir également:

23 réponses

R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
14 janv. 2008 à 15:06
A vrai dire, tout est déjà là : Upload de fichiers
0
j ai remodifier le formulaire (form.html) comme ceci :

<!-- Formulaire -->

      <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
  
      <form method="POST" action="upload.php" enctype="multipart/form-data">

      <!-- Limiter la taille des fichiers à 500Ko -->

      <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
  
      <fieldset>

      <legend><font color=#000000>Envoi de fichiers</font></legend>
  
      <!-- champs d'envoi de fichier, de type file -->
  
      <p><label for="up"><font color=#000000>Fichier</font></label><input type="file" name="up" /></p>
 
      
 
      <!-- bouton d'envoi -->
  
      <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
  
      </legend>
  
      </fieldset>
  
      </form> 


et la page php (upload.php) :

<?php

 

if(isset($_FILES['up']))

{

// params

unset($erreur);

$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');

$taille_max = 100000;

$dest_dossier = '/up/';

// utilisez également des slashes sous windows : $dest_dossier = '/up//up/';

// vérifications

if( !in_array( substr(strrchr($_FILES['up']['name'], '.'), 1), $extensions_ok ) )

{

$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';

}

elseif( file_exists($_FILES['up']['free'])

and filesize($_FILES['up']['free']) > $taille_max)

{

$erreur = 'Votre fichier doit faire moins de 500Ko !';

}

// copie du fichier

if(!isset($erreur))

{

$dest_fichier = basename($_FILES['up']['free']);

// formatage nom fichier

// enlever les accents

$dest_fichier = strtr($dest_fichier,

'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

// remplacer les caracteres autres que lettres, chiffres et point par _

$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);

// copie du fichier

move_uploaded_file($_FILES['up']['free'], $dest_dossier . $dest_fichier);

}

}

 

?>

Hebergeur en maintenance, désole.

Veuillez reporter votre hebergement.

merci


toujour en panne je tombe bien sur la page php avec "Hebergeur en maintenance, désole.

Veuillez reporter votre hebergement.

merci
en haut de page

pour faire un test ===> http://acr02.fr/form.html

merci
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
15 janv. 2008 à 12:48
L'erreur venait de la ligne
$dest_dossier = '/up/';




Cela indique que le dossier destination est à la racine du serveur (alors que toi tu veux sans doute que ce soit à la racine du site)... Il faut donc changer pour 'up/'.

et puis du fait que tu utilisais mal le fichier $_FILES (pour savoir exactement ce qu'il contient, fais print_r($_FILES) et tu verras sa structure exacte).

Bon, pour que ça marche, je l'ai installé et fait marcher, et j'ai changé des trucs à droite à gauche, je ne peux pas te dire de tête si c'est bloquant ou pas.

Donc je te mets le code (qui marche) :

<?php

if(!isset($_FILES['up'])) {
        header('Location: form.html');
        exit();
}

// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = 'up/';
// utilisez également des slashes sous windows : $dest_dossier = '/up//up/';
// vérifications
if( !preg_match('/\.'.join('|', $extensions_ok).'\Z/', $_FILES['up']['name']) ) {
        $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
} elseif( file_exists($_FILES['up']['tmp_name'])
                and filesize($_FILES['up']['tmp_name']) > $taille_max) {
        $erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
        $dest_fichier = basename($_FILES['up']['name']);
        echo "fichier destination : ",$dest_fichier, "<br/>";
        // formatage nom fichier
        // enlever les accents
	$dest_fichier = strtr($dest_fichier,
		'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

		'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

        // remplacer les caracteres autres que lettres, chiffres et point par _
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
        // copie du fichier
        move_uploaded_file($_FILES['up']['tmp_name'], $dest_dossier . $dest_fichier);
}


?>

Il s'est produit une erreur : <?=$erreur ?>


Bon, j'ai pas fait dans la dentelle, il indique toujours qu'il y a eu une erreur. Quand celle-ci est vide, c'est qu'il n'y a pas d'erreur... ;-)


Raph
0