8791 sujets

Développement web côté serveur, CMS

Salut,

J'ai cherché, essayé, cherché, essayé, mais ça na jamais marché (j'ai plus touché au PHP depuis longtemps, alors je me remets dans le bain).
J'ai fait un script en local permettant d'uploader un fichier (j'ai raccourci le code pour le forum):

index.php

<body>
<form action="up.php" method="post" enctype="multipart/formdata">
	<input type="file" name="file" /> <br/>
	<input type ="submit" value="UP !" />
</form>

</body>


up.php
<?php
//FUNCTION
function ufyMe($url) { 
    $ufy = @file_get_contents("http://ufy.me/api/shorten/".$url); 
    if (!$ufy) { 
        return $url; 
    } 
    return $ufy; 
} 

// error_reporting(E_ALL ^ E_NOTICE);

$size = 90000000;
$rep = 'up/';
$ts = time();
$adresse = 'http://localhost/test/up';
$rsize = '90 MO';
$name = $ts.''.$_FILES['file']['name'];
$radresse = $adresse.''.$name; 
$sadresse = ufyMe($radresse);

if (isset($_FILES['file']) )
{

	if($_FILES['file']['size'] > $size)
	{
	$erreur = 'Votre fichier fait '.$_FILES['file']['size'].' octet et la limite est de '.$rsize;
	}

	if(isset($erreur))
	{
	echo $erreur;
	}
	
	elseif($_FILES['file']['size'] <= $size)
	{
	move_uploaded_file($_FILES['file']['tmp_name'], $rep . basename($name));
	echo 'Voici l\'adresse de votre fichier :<br/> <input type="text" value="' .$radresse. '" /><br/> Raccourci :<br/> <input type="text" value="' .$sadresse. '"/>';
	}
}

else
{
echo 'error';
}
?>


Ca marche sous GoogleChrome, mais pas sous Firefox... Je ne comprends pas.
Normalement, sous FF ça doit vous retourner ça (le chemin change):
Notice: Undefined index: file in /opt/lampp/htdocs/test/up.php on line 31

Si je change $name en : $name = $ts.''.$_FILES['file']['name'];
Aucune erreur ne s'affiche et ça ne marche toujours pas.

Voilà, j'aimerais bien trouver ce qui cloche.
Merci. Smiley smile
Modifié par Archlance (27 Jul 2010 - 14:01)
Salut...

comme le dit la ligne d'erreur la clé d'index 'file' n'existe pas dans ton cas....

Je pense que c'est un mauvais choix d'utiliser 'file' qui est réservé dans pas mal de langage...

Essaye tout simplement de changer pour userfile par exemple ou encore myfile enfin bref autre chose quoi...
Salut, Smiley smile

J'ai modifié :

index.php
<form action="up.php" method="post" enctype="multipart/formdata">
	<input type="file" name="metro" /> <br/>
	<input type ="submit" value="UP !" />
</form>


up.php
<?php
//FUNCTION
function ufyMe($url) { 
    $ufy = @file_get_contents("http://ufy.me/api/shorten/".$url); 
    if (!$ufy) { 
        return $url; 
    } 
    return $ufy; 
} 

// error_reporting(E_ALL ^ E_NOTICE);

$size = 90000000;
$rep = 'up/';
$ts = time();
$adresse = 'http://localhost/test/up';
$rsize = '90 MO';
$name = $ts.''.$_FILES['metro']['name'];
$radresse = $adresse.''.$name; 
$sadresse = ufyMe($radresse);

if (isset($_FILES['metro']) )
{

	if($_FILES['metro']['size'] > $size)
	{
	$erreur = 'Votre fichier fait '.$_FILES['metro']['size'].' octet et la limite est de '.$rsize;
	}

	if(isset($erreur))
	{
	echo $erreur;
	}
	
	elseif($_FILES['metro']['size'] <= $size)
	{
	move_uploaded_file($_FILES['metro']['tmp_name'], $rep . basename($name));
	echo 'Voici l\'adresse de votre fichier :<br/> <input type="text" value="' .$radresse. '" /><br/> Raccourci :<br/> <input type="text" value="' .$sadresse. '"/>';
	}
}

else
{
echo 'error';
}
?>


Maintenant (toujours sous Firefox), ça m'affiche ça :
Notice: Undefined index: metro in /opt/lampp/htdocs/test/up.php on line 31

Voilà, merci d'avance. Smiley lol
Archlance
ok donc c'est dès le départ du script...

bon moi je fais ça avant toute chose

if($_FILES["UploadFile"]["error"]==0)


car oui il y a un error de dispo dans $_FILES

donc je te conseillerais de faire ceci pour l'instant afin de débugger...

print_r($_FILES);


et regarde ce que ça te retourne....

les erreurs sont répertoriées ici http://www.php.net/manual/fr/features.file-upload.errors.php
Modifié par pchlj (24 Jul 2010 - 23:44)
Donc, j'ai fait un fichier 'debug.php'.

index.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  <title></title>

  <style type="text/css" media="screen">
    /* Feuille de styles interne */
  </style>
</head>
<body>
<form action="debug.php" method="post" enctype="multipart/formdata">
	<input type="file" name="uploadfile" /> <br/>
	<input type ="submit" value="UP !" />
</form>

</body>
</html>


debug.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  <title></title>

  <style type="text/css" media="screen">
    /* Feuille de styles interne */
  </style>
</head>
<body>
<?php
echo $_FILES['uploadfile']['error'];
?>


</body>
</html>

Seulement, il m'affiche en erreur QUE sur Firefox :
Notice: Undefined index: uploadfile in /opt/lampp/htdocs/test/debug.php on line 15
La ligne 15 correspond à :
echo $_FILES['uploadfile']['error'];


Sous Chromium il m'affiche : 0.
Donc c'est bon.
Je comprends plus rien. XD
Firefox ne veut pas lire la variable $_FILES, ou du moins, ne la trouve pas. Ca peut venir du formulaire... non ?
Modifié par Archlance (25 Jul 2010 - 09:28)
Yeah !
J'ai trouvé le bug !

Dans la première ligne de mon formulaire :
<form action="up.php" method="post" enctype="multipart/formdata">

Il manque le trait-d'union à multipart/form-data.

Merci de votre aide. Smiley lol