charge un fichier d'un ordinateur a un serveur web.

Mammouth du PHP | 558 Messages

17 juil. 2010, 09:45

Bonjour ma question est toute simple et pourtant je n'arrive a rien.
Pour envoyé un mail avec pièce jointe avec la fonction mail est-il nécessaire de charger le fichier sur le serveur.
J’en suis encore à ma recherche d'information pour codé un envoie avec mail(); avec une pièce jointe.
Merci.
Modifié en dernier par hakazizi le 18 juil. 2010, 21:23, modifié 1 fois.

Eléphanteau du PHP | 30 Messages

17 juil. 2010, 11:05

Oui c'est nécessaire que tu ai le fichier sur ton serveur.

En ce qui concerne l'envoi en pièce jointe. Je te recommande plutôt de voir du côté de PHPMailer, ce petit article en français sera sûrement intéressant :
http://www.zhell.fr/2009/09/envoi-de-ma ... phpmailer/
PHP, Javascript, VBScript, Java, Python, Ruby, 4D, LotusScript, ObjectivC, C, C++, et sans compter les framework...
Qui a dit que les programmeurs n'avaient pas d'amis ?

Mon blog : http://www.programmeur.ch/blog/

Mammouth du PHP | 558 Messages

18 juil. 2010, 13:17

merci j'ai déja été voir du coté de phpmailer, je n'y est pas trouvé ma solution.
J’ai oublié de préciser que c'était à partir d'un formulaire.
Pour ce qui est du code html il suffit de rajouté a la balise form l'attribut ' enctype="multipart/form-data" ',
Et dans la balise input mettre le type en file ' type="file" '.
Je ne sait pas comment récupérer le fichier et si il faut le charge sur le serveur il faut donc le détruire après l'envoie et ce pour des raisons de sécurité.
Aie, aie, aie, je suis pas sorti de l’auberge je n'y suis même pas encore entré... :cry:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 juil. 2010, 14:03

Le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Téléchargement de fichiers avec vérification et renommage

pour la suppression du fichier, regarde du côté de unlink :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 558 Messages

19 juil. 2010, 00:07

merci ryle
voila cela fonctionne pour la sécurité chacun vois midi à sa porte...
$nam=basename($_FILES['essaie']['name']);
//on créé une suite aléatoire de 21 chiffre pour evité l'ecrasement je trouve cela beaucoup plus simple que la solution proposé et mathématiquement il est quasi impossible de tombe 2 fois sur la meme valeur.
$name1=rand(1,9);
for($i=0; $i<20; $i++){$name1.=rand(0,9);}
$name=''.$name1.''.$nam.'';
//on charge le fichier sur le sereur
move_uploaded_file($_FILES['essaie']['tmp_name'],'/chemin absolue vers le fichier/uploads/'.$name);

unlink('uploads/'.$name)

ViPHP
ViPHP | 5462 Messages

19 juil. 2010, 01:14

//on créé une suite aléatoire de 21 chiffre pour evité l'ecrasement je trouve cela beaucoup plus simple que la solution proposé et mathématiquement il est quasi impossible de tombe 2 fois sur la meme valeur.

hummm uniqid ?

Mammouth du PHP | 558 Messages

19 juil. 2010, 08:05

Le problème c'est que uniqid je m'en sert ensuite pour la frontière du mail.

ViPHP
ViPHP | 4039 Messages

19 juil. 2010, 08:33

Le problème c'est que uniqid je m'en sert ensuite pour la frontière du mail.
mt_rand() génère une meilleure valeur aléatoire.

Et uniqid() n'est jamais qu'un timestamp avec les microsecondes en hex (sous unix, sous windows il me semble juste un timestamp).

Mais tu peux générer un hash d'après le fichier et le timestamp, une formule à ta sauce, qui sera bien plus unique qu'un chiffre basé sur rand().

Tout ça reste cependant fort inutile. Perso je préfère garder le nom du fichier (en limitant les caractères autorisés) et en ajoutant un timestamp en base 36, quelque chose comme ça. Ainsi, le nom du fichier reste unique, et on peut reconnaître le fichier à son nom.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 30 Messages

19 juil. 2010, 17:26

Deux petites fonctions (l'une dépendant de l'autre). Pour obtenir un nom de fichier vraiment unique. Même si tu ne les utilises pas, cela sera toujours utile.

getNewFileName () -> Renvoi un nom de fichier unique par rapport aux fichiers déjà présents dans le répertoire $pathDestination, en ajoutant un chiffre séquentiel à la fin du nom (avant l'extension) jusqu'à ce qu'aucun fichier du même nom n'existe dans le répertoire.

fileGetExtension() -> Renvoi l'extension du nom de fichier passé en paramètre.
<?
function getNewFileName($fileName,$pathDestination){
		$fileExtension			=	fileGetExtension($fileName);
		$fileNameNoExtension	=	str_replace($fileExtension,'',$fileName);
		$j = 0;
		while (is_file($pathDestination.$fileName)){
			$j++;
			$fileName	=	$fileNameNoExtension.'_'.$j.$fileExtension;
		}
		return $fileName;
}

function fileGetExtension($fileName){
	$fileExtension=strrchr($fileName,'.');
	if  ($fileExtension===false){ $fileExtension = ''; }
	return $fileExtension;
}
?>
PHP, Javascript, VBScript, Java, Python, Ruby, 4D, LotusScript, ObjectivC, C, C++, et sans compter les framework...
Qui a dit que les programmeurs n'avaient pas d'amis ?

Mon blog : http://www.programmeur.ch/blog/

ViPHP
ViPHP | 5462 Messages

19 juil. 2010, 17:43

pour fileGetExtension c'est pathinfo, et pour getNewFileName c'est plus simple de récupérer la dernière incrémentation avec un glob :wink:

Eléphanteau du PHP | 30 Messages

19 juil. 2010, 18:37

Pour ce qui est de pathinfo, j'avais fait ces deux fonctions pour l'éviter justement, à cause de son bug avec les caractères accentués sur les fs utilisant UTF-8 dans certaines versions PHP.
Pour glob en effet. A voir si n'est pas soumis au même bug que pathinfo.
PHP, Javascript, VBScript, Java, Python, Ruby, 4D, LotusScript, ObjectivC, C, C++, et sans compter les framework...
Qui a dit que les programmeurs n'avaient pas d'amis ?

Mon blog : http://www.programmeur.ch/blog/