upload d'image distante depuis un autre serveur...

WRInaute occasionnel
Bonjour, j'ai un script conventionnel d'upload d'image, ou un utilisateur peut envoyer des images de son PC sur un dossier de mon serveur, et ceci depuis un formulaire que voici...

Code:
<!-- Debut du formulaire -->
<form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Formulaire</legend>
<p>
<label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
<input name="fichier" type="file" id="fichier_a_uploader" />
<input type="submit" name="submit" value="Uploader" />
</p>
</fieldset>
</form>
<!-- Fin du formulaire -->

tout fonctionne impeccable, mais il faudrait que je puisse rajouter une autre possibilité.

lorsque les images de l'utilisateur se trouvent sur un serveur distant (blog, site perso) et qu'il donne une url pour y accéder.

comment transformer l'url qui pointe sur l'image (dur genre "http://www.monsitesss.com/images1.jpg" dans le même format que la balise de mon formulaire <input name="fichier" type="file" id="fichier_a_uploader" /> avant de transmettre au script d'Upload?
 
WRInaute impliqué
Le type de l'input ne devra pas être "file" mais "text".
Ensuite tu récupère cette url et tu vas chercher le fichier avec cUrl, wget, file_get_contents, ce que tu veux !
 
WRInaute passionné
<form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
lol :p
Tu peux pas savoir où t'es ?

le file_get_content devrait marcher mais c'est une vraie merde à sécuriser.
Un bon fichier .php avec un rewrite .jpg (si tu check les extensions) un header (du fichier php) qui dis "oui oui je suis une image) et dedans du bon gros code qui va bien et zou ;)
 
WRInaute occasionnel
si si je sais ou je suis, j'en suis quand-même pas là... :)

c'est un code exemple que j'ai trouvé sur le net... c'était un exemple...

Par contre, j'ai beaucoup, mais alors beaucoup cherché sur le net, un code qui permet de rapatrier une image dont on a l'url, sur son propre serveur... mais je n'ai rien trouvé de bien. Tu as quelque chose de valable?
 
WRInaute passionné
Bah je n'ai rien pour moi mais bon c'est hyper simple à faire en "pas sécurisé" mais tout ce qui est upload est toujours galère à sécu.
Niveau fonction PHP, regarde pour du file_get_content, getimagesize, mais bon, je déconseille cette méthode tout de même.
 
Nouveau WRInaute
Slt ,

pour l'upload , c'est vrai que c'est toujours un risque , il faut que tu sois tres stricte sur les fichiers , personnellement , je conseil l'utilisation des fonctions suivantes :

1: à l'upload vérifier les extensions ( une simple expression régulière ou utilisation de pathinfo() )
2: passer à l'antivirus apres l'upload
3: en plus de vérifier l'extension , verifier le type mime
finfo_file ( depuis php5.3 ou via pecl )
4: si tout est ok , bien stocker le fichier dans un répertoire non accessible via le net
5: utiliser un nom encodé / chiffré ( avec une table de correspondance en base par exemple )

Enfin , voilà , c'est comme ça que je procéde dans la normal ,

Bonne continuation ,
Ch.
 
WRInaute occasionnel
oui pas de souci, j'ai tout un script php qui vérifie, extension, taille, genre etc.. je m'en suis sorti, merci pour votre aide.
 
WRInaute impliqué
Désolé mais vérifier l'extension ne sert absolument à rien, et risque d'empecher tes utilisateurs d'uploader certaines images.
 
WRInaute occasionnel
bon si jamais c'est pas pour la banque de France... Le principe est de protéger pour qu'on ne puisse pas mettre un fichier exécutable, ou quelque chose d'inapproprié pour le moment je protège avec ce code

Code:
elseif($_FILES['file_name']['type'] != "image/jpeg"
			&& $_FILES['file_name']['type'] != "image/pjpeg")
		{
				$error="Erreur sur la nature du fichier : Le format du fichier doit être un JPEG<br><br>";
		}
		elseif($_FILES['file_name']['size'] > $taille_octets_max)
		{

le type de fichier et la taille par ce procédé.

que faut-t-il faire de plus?
 
WRInaute discret
Bonsoir !

Pour ce genre de fonctionnalité, je mets un champ de type "radio" en proposant les choix "Envoyer un fichier depuis votre PC" et "Envoyer un fichier en saisissant son lien".

Quand vous récupérez le formulaire, vous regardez si l'utilisateur a coché "fichier local" ou "url distante", et vous agissez en fonction ;)

Bonne soirée !
 
Discussions similaires
Haut