upload de fichier superieur a 100 ko chez free

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 10:10

Bonjour a tous. Ayant un espace perso chez free,j ai créé un formumlaire ou les utilisateurs peuvent uploader des images.Le probleme est que par defaut on ne peut envoyer des fichiers superieurs a 100ko en taille. Comment puis je y remedier?

Voici mon code a l etat actuel:
<?php 
if($envoyer!="")
{
if ($Fichier && $Fichier != "none") {
$OriginalFichier_name = $Fichier_name;
$Fichier_name = $Fichier_name;
copy($Fichier,$Fichier_name);
echo "fichier envoyé";
}
else{
print "fichier trop gros ou aucun fichié sélectionné";}
}
ob_end_flush();
?>
Par ailleurs, pour resoudre ce probleme, j ai surfé sur le net et j ai trouvé une page disant de faire ce code:
<?php 
if($envoyer!="")
if ($Fichier && $Fichier != "none") {
$ftpc=ftp_connect("ftpperso.free.fr");
$cool=ftp_login($ftpc,$login,$password);
$cool=ftp_put($ftpc,"./",$Fichier,FTP_BINARY);
echo "fichier envoyé";
}
else{
print "fichier trop gros ou aucun fichié sélectionné";
}
?>



Qu en est il de ce code? Est ce qu il est bon pour permettre l envoi de fichier superieur a 100ko? Si oui pourriez vous m expliquer le fonctionnement exact de la fonction ftp_put(ce qu elle prend en parametre)?
Sinon auriez vous une solution a mon probleme?

Merci d avance

Mammouth du PHP | 19672 Messages

22 déc. 2005, 11:08

Je vois deux problèmes: le premier, c'est l'utilisation de fonctions ftp qui sont désactivées chez free.fr.

Le second, c'est que je ne vois pas où dans ton code tu récupères les informations du formulaire sur ton fichier ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 12:41

Pour le premier probleme:impossible de passer par cette solution donc

Pour le second:
Je recupere le fichier quand je fais
if ($Fichier && $Fichier != "none") { 
$OriginalFichier_name = $Fichier_name; 
$Fichier_name = $Fichier_name; 
copy($Fichier,$Fichier_name); 
J ai trouvé ce script sur le net a vrai dire mais mon probleme principal qui est pouvoir uploader des fichiers superieurs a 100ko n est pas resolu par cette methode

Vois tu une autre facon de proceder de facon a pouvoir uploader des images allant par exemple jusqu a 500 ko?

Mammouth du PHP | 19672 Messages

22 déc. 2005, 12:56

Jette un coup d'oeil sur ce tuto
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 13:44

Alors petite question sur ce tutto
Mon script qui va permettre l envoi des fichiers est dans le dossier qui va contenir les images que je vais envoyer

la variable $dest_dossier, je dois l initialiser a quoi?

Car quand je l ai execute, il est bien passé la ou il fallait mais il ne m arien uploadé la ou je voulais

Mammouth du PHP | 19672 Messages

22 déc. 2005, 13:47

il faut mettre un chemin relatif vers le répertoire qui doit recevoir tes images.

Sans voir le bout de code que tu as fait, difficile de te dire si ce que tu as mis est correct ou non.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 13:50

pour la variable j ai mis
$dest_dossier='./';

Est ce bon ou faut il mettre l adresse entiere du dossier?

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 18:41

sinon le code entier est (si c est cela que tu voulais):
<?php 
ob_start();
if(isset($_FILES['Fichier'])){
	unset($erreur);
	$extension_ok=array('jpg');
	$taille_max=500000;
	$dest_dossier='./';
	if(!in_array(substr(strrchr($_FILES['Fichier']['name'],'.'),1),$extension_ok)){
		$erreur='Veuillez selectionner un fichier de type jpg';
	}
	elseif(file_exists($_FILES['Fichier']['tmp_name'])
		   and file_size($_FILE['Fichier']['tp_name'])>$taille_max){
		$erreur='Fichier trop gros';
	}
	
	//Copie du fichier
	if(!isset($erreur)){
		$dest_fichier=basename($_FILES['Fichier']['name']);
		//formatage nom fichier
		//enlever les accents
		$dest_fichier=strtr($dest_fichier,  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
		//remplacer les caracteres autres que lettre chiffres et point par _
		$dest_fichier=preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
		//copie du fichier
		move_uploaded_file($_FILES['Fichier']['tmp_name'],$dest_dossier.$dest_fichier);
		echo "fichier envoyé";
		header("refresh:3;url=http://aelezkann.free.fr/index.php?page=image");
	}
	else {
		echo $erreur;
		header("refresh:3;url=http://aelezkann.free.fr/index.php?page=image");
	}
}

		
		
ob_end_flush();
?>

Quelqu un pourrait m aider ?

Mammouth du PHP | 19672 Messages

22 déc. 2005, 19:31

Petite question courte mais qui risque de revêtir une certaine importance : comprends-tu ce code ou c'est quand même un peu du chinois pour toi ?

Il serait bien que tu arrives à "lire" ce code avec quasiment autant de facilité que tu peux lire un journal : comprendre qu'ici on assigne une valeur à une variable, qu'ailleurs on déclare une fonction, qu'ailleurs encore on fait telle autre chose Et en fin de compte, il est donc important de comprendre le cheminement d'un code : si tu fais bêtement un copier/coller, c,est sans intérêt, tu n'apprends rien et on perd tous les deux notre temps.

Un tutorial explique ces choses: qu'as-tu lu en détail, et qu'as-tu passé en diagonale ?

Ensuite, si ça ne fonctionne pas, explique moi donc quelles actions tu as entrepris pour trouver où pourrait être l'erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 20:03

Alors pour repondre a ta question oui je comprends tres bien le code mais mon probleme est toujours sur la taille des fichiers

Par contre, en bas du tuttorial, il y a l utilisation du .htaccess qui dit pouvoir modifier la taille des fichiers a uploader.

Pourrais tu m en expliquer le fonctionnement?Ou faut il creer un tel fichier?Doit on l appeler quelmque part dans le code pour l utiliser?

Ca je l avoue je n ai pas compris l utilisation des .htaccess

Mammouth du PHP | 19672 Messages

22 déc. 2005, 20:06

Sur free.fr, tu ne pourras pas modifier la taille des upload par fichier .htaccess. D'autre part, j'ai déjà fait ce genre de script sur des sites qui sont chez free.fr et je n'ai pas de limitation particulière hormis celles définies dans le fichier de configuration de PHP auquel je 'ai pas accès, mais ça va largement au-delà des 100Ko

As-tu mis dans ton formulaire un champ caché avec pour attribut name MAX_FILE_SIZE ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 20:11

Oui j ai mis ce champ caché comme je l ai vu

Mais quand je fais

Code : Tout sélectionner

if(move_uploaded_file($_FILES['Fichier']['tmp_name'],$dest_dossier.$dest_fichier)) echo "fichier envoyé"; else echo "erreur lors de l envoi";
(j ai prefere le mettre dans un test pour controler la sortie de la fonction)

Alors si le fichier fait moins de 100 ko il me repond fichier envoyé sans probleme mais des que j essaie d envoyer un fichier superieur (la j ai essayé avec un fichier de 107ko),il me met le message erreur lors de l envoi
Donc c est pour cela que je ne vois vraiment pas d ou peut provenir le probleme

Mammouth du PHP | 19672 Messages

22 déc. 2005, 20:14

Quelle valeur as-tu mis dans le champ caché ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 37 Messages

22 déc. 2005, 20:15

j ai mis 500 000
ca correspond bien aux fichiers faisant 500ko non?

Mammouth du PHP | 19672 Messages

22 déc. 2005, 20:23

1Ko = 1024 octet;
1Mo = 1024 ko = 1048576 octets.
==> 500Ko = 512000 octets

Donc effectivement, la valeur permet largement de laisser passer des fichiers de + de 100Ko. Vérifie donc le phpinfo sur free à propos de la directive max_upload qui devrait normalement être de 2Mo... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: