Problème upload de fichier sur free.fr [PHP] - PHP - Programmation
Marsh Posté le 04-05-2002 à 18:45:57
peut être que tu pourrais filer le code qui traite le formulaire, là y a pas l'air d'avoir de problème.
Marsh Posté le 04-05-2002 à 19:05:10
Code :
|
[jfdsdjhfuetppo]--Message édité par Dost67 le 04-05-2002 à 19:07:10--[/jfdsdjhfuetppo]
Marsh Posté le 04-05-2002 à 19:12:29
Ca c'est la fonction qui traite le fichier dans mon objet
Code :
|
Marsh Posté le 04-05-2002 à 19:37:47
ton fichier a quel extension (php ou php3, donc quel version de php tu utilises)?
Si php4 (extension php) je pense qu'on ne peut pas car le enctype="multipart/form-data" semble bloquer l'envoie de donnée et la variable file_uploads (obtenue avec phpinfo()) n'est pas défini( alors que upload_max_filesize=200K).
(je sais pas s'il y a une autre solution pour uploader un fichier autrement, on m'a parlé d'utiliser: HTTP_GET(ou POST)_VARS['variable'] mais je n'ai eu aucun changement )
edit: ca sert à rien de mettre:
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
car la variable upload_max_filesize=200ko en php4 et 209715 octets en php3)
[jfdsdjhfuetppo]--Message édité par nico23 le 04-05-2002 à 19:55:20--[/jfdsdjhfuetppo]
Marsh Posté le 04-05-2002 à 19:52:43
Pour $HTTP_GET_VARS je vais pas uploadé mon fichier en le mettant dans l'URL !!!
M'enfin c'est exact mon fichier est .php et dans phpinfo file_uploads : no value... Je vais essayer de mettre l'extension .php3 pour voir.
Marsh Posté le 04-05-2002 à 19:56:28
en php3 ca fonctionne mais dans ce cas on ne peut plus utiliser les sessions (si on veut gérer l'upload suivant les utilisateurs inscrits)
[jfdsdjhfuetppo]--Message édité par nico23 le 04-05-2002 à 19:57:05--[/jfdsdjhfuetppo]
Marsh Posté le 04-05-2002 à 20:01:38
Ouais voilà le problèm est là. En fait à part le ob_start() j'ai pas grand chose de pas compatible si ce n'est une parse error à la ligne 144 alors qu'avaec l'extension .php j'en ai pas
Marsh Posté le 05-05-2002 à 18:16:11
l'upload marche nickal en php4, tout comme en php3...
Quelle est la version de php utilisée ?
tu as quelque chose dans le $HTTP_POST_FILES[] ?
et dans $thefile ?
pourquoi tu encode l'url du fichier dans ton script ?
Marsh Posté le 05-05-2002 à 20:37:16
Sh@rdar a écrit a écrit : l'upload marche nickal en php4, tout comme en php3... Quelle est la version de php utilisée ? tu as quelque chose dans le $HTTP_POST_FILES[] ? et dans $thefile ? pourquoi tu encode l'url du fichier dans ton script ? |
l'upload marche sur free en php4?
[jfdsdjhfuetppo]--Message édité par nico23 le 05-05-2002 à 20:39:16--[/jfdsdjhfuetppo]
Marsh Posté le 06-05-2002 à 08:58:41
Sur Free j'en sais rien mais vu qu'il marchait en PHP3, je vois pas pourquoi il passerait plus..
Marsh Posté le 06-05-2002 à 22:03:05
Sh@rdar a écrit a écrit : Sur Free j'en sais rien mais vu qu'il marchait en PHP3, je vois pas pourquoi il passerait plus.. |
nico23 a écrit a écrit : ton fichier a quel extension (php ou php3, donc quel version de php tu utilises)? Si php4 (extension php) je pense qu'on ne peut pas car le enctype="multipart/form-data" semble bloquer l'envoie de donnée et la variable file_uploads (obtenue avec phpinfo()) n'est pas défini( alors que upload_max_filesize=200K) |
Marsh Posté le 06-05-2002 à 22:12:07
oui pas mal de chose ont ete zappes sur free en php4 comme les fonctions ftp
Marsh Posté le 06-05-2002 à 23:04:11
http://www.php.net/manual/en/features.file-upload.php
y a plusieurs tuyaux, notamment concernant le safe mode
Marsh Posté le 06-05-2002 à 23:11:23
je préfére http://www.php.net/manual/fr/features.file-upload.php
ensuite le problème vient du ENCTYPE="multipart/form-data"
Si on le mets toutes les variables ne sont pas transmises ($var1="", $var2=""...)
Si on le retire on récupère bien les variables mais y a plus d'upload de fichier possible.
Marsh Posté le 06-05-2002 à 23:26:23
y a quand même un truc que je pige pas..
j'ai utilisé un script d'upload pour un client hébergé chez online.fr (donc la même conf que Free le mail en plus) et ça marchait nickel...
Marsh Posté le 07-05-2002 à 18:36:08
Sh@rdar a écrit a écrit : y a quand même un truc que je pige pas.. j'ai utilisé un script d'upload pour un client hébergé chez online.fr (donc la même conf que Free le mail en plus) et ça marchait nickel... |
tu as un exemple de script? (la méthode utilisé est classique, on récupère le nom de fichier avec $file_name
(le fichier que j'ai fait fonctionne quand il est en php3, mais pas en php(4))
Marsh Posté le 07-05-2002 à 18:42:36
je viens de faire un test chez free :
g renomer en .php mon script d'upload qui marche en .php3
...
ben ca marche plus
ma variable $img1_name est = à 0 .
Marsh Posté le 07-05-2002 à 19:28:03
perso j ai un scrip d upload qui marche sur free.fr
wait je ais le cjercher
Marsh Posté le 07-05-2002 à 19:30:13
<form METHOD="POST" ENCTYPE="multipart/form-data">
<input TYPE="file" NAME="FileTO"><br>
<input TYPE="submit" NAME="Enter" Value="Transférer"></form><br>
<? $fichier=$FileTO_name;
if($fichier!="" ){
if($ok=="ok" ){
if(copy($FileTO, "$rep".$fichier)){
echo"Fichier copié avec succés";}
else{
echo"Erreur";}}}
?>
Marsh Posté le 07-05-2002 à 19:55:59
Toujours pareil :
1 : .php3 --> fonctionne
2 : .php --> fonctionne pas
Pourtant même script, juste l'extension qui change entre les 2 cas.
Marsh Posté le 07-05-2002 à 20:31:24
ben le problème vient du ENCTYPE="multipart/form-data"
sans les variables standard passent, mais pas les fichiers
avec plus rien ne passent
[jfdsdjhfuetppo]--Message édité par nico23 le 07-05-2002 à 20:57:21--[/jfdsdjhfuetppo]
Marsh Posté le 08-05-2002 à 13:24:11
je réitère et je signe, ce script en PHP4 fonctionne chez online tout à fait normalement :
<html>
<head>
<title>Page Principale</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#FFFFFF">
<?
require_once("config/config.inc.php" );
$submit = $HTTP_POST_VARS["submit"];
switch ($submit) {
case "Envoyer ce fichier";
// DEBUT DU TRANSFERT
// Récupération des valeur des champs de formulaire
$SourceFile = $HTTP_POST_FILES['userfile']['tmp_name'];
$SourceFile = basename($SourceFile);
// Option "Garder le même nom"
if ($HTTP_POST_VARS['keepname'] == 1) $Target_file = $HTTP_POST_FILES['userfile']['name'];
else $Target_file = $HTTP_POST_VARS["newname"];
// Copie du fichier sur le serveur
if (!ereg(".jpg$",$Target_file) ) $Target_file .= ".jpg";
$Copy = copy ($Target_temp.$SourceFile , $Target_img.$Target_file);
// contrôle d'erreur
if (!$Copy) echo "Une erreur a empéché l'envoi de l'image..<br>\n";
else {
// Récupération de l'URL et de la taille de l'image
$Url = "../".$ImgRep.$Target_file;
$Size = getimagesize($Url);
// création de la vignette
$OpenImage = imagecreatefromjpeg($Url);
$NewThumbnail = imagecreate($Size[0]/6,$Size[1]/6);
//$NewThumbnail = imagecreatetruecolor($Size[0]/5,$Size[1]/5);
$NewImage = imagecopyresized ($NewThumbnail,$OpenImage,0,0,0,0,$Size[0]/6,$Size[1]/6,$Size[0],$Size[1]);
$SaveImage = imagejpeg($NewThumbnail,"../".$ThumbRep.$Target_file,75);
// on ajoute les infos dans la base
$commentaire = stripslashes($HTTP_POST_VARS["commentaire"]);
$titre = stripslashes($HTTP_POST_VARS["titre"]);
$cat = $HTTP_POST_VARS["categorie"];
if (is_array($cat)) {
while (list($key,$val) = each ($cat) ) {
$Categorie .= " $val";
}
}
$lieu = stripslashes($HTTP_POST_VARS["lieu"]);
$date = $HTTP_POST_VARS["annee"];
$Connect = mysql_connect($MyServer,$MyUser,$MyPassword);
mysql_select_db($MyBase);
$Query = mysql_query("INSERT INTO $PhotoTbl values ('0','$titre','$coul
eur','$Categorie','$date&
#039;,'$commentaire','$Target_fi
le','$lieu','".$Size[0].
"','".$Size[1]."'",$Connect)
;
// Affichage du rapport de transfert
// le tableau est crade mais plus lisible comme ça.
?>
<table border="0">
<tr><td colspan="2"><b>Rapport de transfert d'image</b></td></tr>
<tr><td width="200">Fichier Source :</td><td><b><? echo $HTTP_POST_FILES['userfile']['name']; ?></b></td></tr>
<tr><td>Taille :</td><td><b><? echo $HTTP_POST_FILES['userfile']['size']; ?></b> octets</td></tr>
<tr><td>Dimensions :</td><td><b><? echo $Size[0]; ?></b> x <b><? echo $Size[1]; ?></b> pixels</td></tr>
<tr><td>Type :</td><td><b><? echo $HTTP_POST_FILES['userfile']['type']; ?></b></td></tr>
<tr><td>Création du fichier temporaire :</td><td><b><? echo $HTTP_POST_FILES['userfile']['tmp_name']; ?></b></td></tr>
<tr><td>Répertoire de destination :</td><td><b><? echo $HTTP_POST_VARS['targetdir']; ?></b></td></tr>
<tr><td>Nouveau nom :</td><td><b><? echo $Target_file; ?></b></td></tr>
<tr><td colspan="2"><hr width="100%"></td></tr>
<tr><td colspan="2"><b>Informations qui apparaitront dans la Phototèque :</b></td></tr>
<tr><td>Titre :</td><td><b><? echo $titre ?></b></td></tr>
<tr><td>Lieu :</td><td><b><? echo $lieu ?></b></td></tr>
<tr><td>Anné :</td><td><b><? echo $annee ?></b></td></tr>
<tr><td>Commentaire :</td><td><b><? echo $commentaire ?></b></td></tr>
<tr><td>Catégories :</td><td><b><? echo $Categorie ?></b></td></tr>
<tr><td>Photo en :</td><td><b><? if ($couleur==1) echo "Couleur"; else echo "Noir & Blanc"; ?></b></td></tr>
</table>
<br><br>Aperçu à 50% de la taille réelle :<br><img src="<? echo $Url; ?>" width="<? echo $Size[0]/2; ?>" height="<? echo $Size[1]/2 ?>">
<?
}
// FIN DU TRANSFERT
break;
default:
// AFFICHAGE DU FORMULAIRE
?>
<table border="0" align="center" cellspacing="0" cellpadding="3" width="794">
<form enctype="multipart/form-data" ation="<? echo $PHP_SELF ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="200000">
<tr>
<td colspan="2" align="center">
<h2>Envoi d'image sur le serveur.</h2>
(Limité à 200Ko max.)</td>
</tr>
<tr>
<td align="right"><b>Fichier à envoyer :</b></td>
<td><input type="file" name="userfile" size="30" maxlength="255"></td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td align="right"><b>Nom du fichier cible :</b></td>
<td><input type="next" name="newname" size="30" maxlength="255"> <small>( ni espace ni caractères spéciaux / \ etc..)</small></td>
</tr>
<tr>
<td align="right"><b>Garder le même nom :</b></td>
<td><input type="checkbox" name="keepname" value="1" onclick="newname.value=''"></td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td align="right"><b>Titre de l'image :</b></td>
<td><input type="text" name="titre" size="30"></td>
</tr>
<tr>
<td align="right"><b>Année :</b></td>
<td><input type="text" name="annee" size="7"></td>
</tr>
<tr>
<td align="right"><b>Lieu :</b></td>
<td><input type="text" name="lieu" size="30"></td>
</tr>
<tr>
<td align="right" valign="top"><b>Commentaire :</b></td>
<td><textarea rows="6" name="commentaire" cols="37"></textarea></td>
</tr>
<tr>
<td align="right" valign="top"><b>Catégories :</b></td>
<td valign="middle"><select size="7" name="categorie[]" multiple>
<option>détail</option>
<option>portrait</option>
<option>extérieur</option>
<option>intérieur</option>
<option>signes</option>
<option>atelier</option>
<option>architecture</option>
</select></td>
</tr>
<tr>
<td align="right"><b>Photo :</b></td>
<td><input type="radio" value="1" checked name="couleur"> Couleur <br>
<input type="radio" value="0" name="couleur"> Noir & Blanc</td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td align="center" valign="top" colspan="2"><input type="submit" name="submit" value="Envoyer ce fichier"></td>
</tr>
</form>
</table>
<?
break;
}
?>
</body>
</html>
Marsh Posté le 08-05-2002 à 15:20:25
Arf... C'est sensé être quoi ça :
$Target_temp.$SourceFile
$Target_img.$Target_file
... enfin surtout les $Target.
Marsh Posté le 08-05-2002 à 15:43:33
voilà une partie du fichier de config ça pourra aider
// Configuration de la photothèque
// Répertoire où se situe la photothèque
$Phototheque_path = "phototheque/";
// Répertoire contenant les images.
$ImgRep = "phototheque/bigimages/";
// Répertoire contenant les vignettes.
$ThumbRep = "phototheque/thumbnails/";
// Lignes à activer en local
$Target_temp = "/tmp/";
$Target_img = "/www/monsite/".$ImgRep;
$Target_thumb = "/www/monsite/".$ThumbRep;
Marsh Posté le 08-05-2002 à 17:50:25
sh@rdar -> tu peux vérifier la ligne upload_max_filesize sur online avec un phpinfo?
edit: correction: la ligne file_uploads au lieu de upload_max_filsize
[jfdsdjhfuetppo]--Message édité par nico23 le 08-05-2002 à 18:37:57--[/jfdsdjhfuetppo]
Marsh Posté le 08-05-2002 à 17:59:00
Sh@ardar je n'ai pas plus réutiliser ton code tel quel mais voici un truc qui en est inspiré :
Code :
|
Eh bien tjrs le même cosntat : .php fonctionne pas, .php3 fonctionne.
Marsh Posté le 09-05-2002 à 01:35:11
déjà y a une erreur : ation au lieu de action dans le tag FORM
pour le répertoire cible, ça peut poser problème le ./, t'as essayer avec le chemin complet ? moi j'ai toujours fais avec.
après vu que le script fonctionne chez mon client, je peux pas te filer le pass pour que t'ailles vérifier..
je vais tester sur un compte free, mais je suis formel, ça fonctionne (et heureusement , j'ai une garantie de 5 ans sur mes scripts )
Marsh Posté le 09-05-2002 à 10:25:13
Sh@ardar > Répond à la question de nico23 si ça fonctionne. (le "ation" il est aussi dans ton script ).
Et de toute façon le pb n'est pas un pb de script PHP ou de chemin complet/relatif c'est un pb de formulaire qui n'est pas soumis !
Marsh Posté le 09-05-2002 à 12:21:56
file uploads 1
Marsh Posté le 09-05-2002 à 16:57:28
eh bin faut le laisser en php3, pour l'instant j'ai pas le temps de me pencher sur le problème pour creuser ça...
Marsh Posté le 09-05-2002 à 20:51:19
en php3 on peut plus utiliser les sessions
je crois que je vais me tourner vers les cookies pour cette partie (et dire que je voulais me mettre aux sessions
edit: avec l'upload)
[jfdsdjhfuetppo]--Message édité par nico23 le 10-05-2002 à 23:11:14--[/jfdsdjhfuetppo]
Marsh Posté le 09-05-2002 à 22:08:18
nico23 a écrit a écrit : en php3 on peut plus utiliser les sessions je crois que je vais me tourner vers les cookies pour cette partie (et dire que je voulais me mettre aux sessions ) |
Marsh Posté le 04-05-2002 à 18:01:30
Ca n'upload pas. En fait mon formulaire ne semble même pas être soumis car la variable $myupl est tjrs vide après avoir cliqué sur OK. Alors pourquoi donc ? Le enctype me semble bon, je ne vois pas d'erreurs ; je précise qu'en local avec EasyPHP ça fonctionne.