Copie à partir d'une URL [PHP]

Résolu/Fermé
Riku Asakura Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 28 novembre 2010 - 29 janv. 2009 à 14:01
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 - 2 févr. 2009 à 09:12
Bonjour à tous !

Je viens vous soumettre un petit souci.
J'ai conçu un hébergeur de fichier dont le principe est l'upload.
Les utilisateurs de ce hoster m'ont soumis une suggestion qui serait d'intégrer un champ texte dans lequel on placerais l'URL d'une image afin de la réhéberger.

J'ai donc utilisé un simple input en type text nommé "url" dans lequel l'utilisateur doit placer l'URL avant de valider le formulaire.

Je pensais utiliser le même principe que pour l'upload, mais je me rends compte que ça doit être un peu plus complexe que cela.

Pour information, voici mon formulaire :
<form action="index.php?mode=url" method="post" enctype="multipart/form-data">
    <p>
        <i>Entrez l'url d'un fichier</i><br />
                (jpg, jpeg, gif, png)
        <br />
        <br />
              <label>url :</label> <input type="text" name="lefichier_url" /> <font id="taille_max">1,5 Mo max.</font>

        <br />			
              <input name="mode" type="hidden" id="mode" value="url">
              <input type="submit" value="Envoyer le fichier" /> 
    </p>
</form>

Tout ce qu'il y a de plus basique quoi...

Je vous en donne très peu tout simplement parce que je ne demande pas la solution toute mâchée, je souhaite juste en discuter avec vous, et obtenir des pistes de recherche.

J'utilise donc une BDD pour enregistrer les informations concernant les fichiers uploadé et les utilisateurs. Pas de création de miniature physique des images (trop superflue pour le moment).

Merci d'avance pour vos réponses et réactions.

Cordialement.

PS : pour tout complément d'info n'hésitez pas à demander

4 réponses

akuma06 Messages postés 48 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 12 juin 2010 4
31 janv. 2009 à 16:13
Remplace :
$code = htmlspecialchars($_POST['code']);
								

mysql_query("INSERT INTO table VALUES('', '" . $nom_fichier . "', '" . $dimensions_completes . "', '" . $taille . "', '" . $date . "', '" . $fonction_image . "', '" . $ip_posteur . "', '" . $code . "')") or die(mysql_error());

Par :
$code = htmlspecialchars($_POST['code']);
								
echo 'toto';
mysql_query("INSERT INTO table VALUES('', '" . $nom_fichier . "', '" . $dimensions_completes . "', '" . $taille . "', '" . $date . "', '" . $fonction_image . "', '" . $ip_posteur . "', '" . $code . "')") or die(mysql_error());


Et dis mois si tu vois écrit toto.
1
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
29 janv. 2009 à 14:41
Bah je comprends pas trop, ou alors ce n'est pas compliqué.
Si c'est pour réhéberger, c'est à dire renvoyer une deuxieme fois l'image, fait simplement un test:
si le formulaire est validé alors
  si l'image est déjà présente alors
     supprimer l'image
     recevoir l'image
  sinon
    recevoir l'image
sinon
  afficher le formulaire
fsi

Ce n'est qu'un algo, mais en php, si tu a déjà le système d'upload implémenté sa devrait pas poser de problèmes.

Donne nous plus d'info sur ce qui te bloque. Tu n'arrives pas à faire un système d'upload? tu bloque au niveau de la bdd?
0
Riku Asakura Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 28 novembre 2010 1
31 janv. 2009 à 16:02
Merci pour ta réponse.

En effet j'ai déjà le système d'upload.
Avec le input de type File ça va tout seul, suffit de récupérer des infos avec :
$_FILES


Sauf que là j'essaye de faire la même chose avec un simple champs texte en récupérant les données d'un fichier distant. Le principe serait de d'ouvrir le fichier distant, de créer un fichier vide sur mon serveur, de copier ce fichier distant dans mon nouveau fichier, de récupérer des infos du fichier distant (ou du nouveau une fois copié, ça revient au même) et de les entrer dans ma BDD.

Voilà pour le moment où j'en suis :
("url" étant le champs texte dans lequel l'on place l'url du fichier distant)

$url=$_POST['url'];
$fichier_distant = fopen($url, 'r'); //On ouvre le fichier distant
$nom_file = uniqid('', false).'.jpg';
$nom_complet = '/host/'.$nom_file;
$fichier_local = fopen($nom_complet, 'w+'); //On créer un fichier vierge sur le serveur
copy ($fichier_distant, $fichier_local ); //on copie le contenu du fichier distant dans le nouveau
fclose($fichier_local); //On ferme le fichier local
fclose($fichier_distant); //On ferme le fichier distant
								
$nom_fichier = $nom_file; //utile pour la fonction suivante
$url_fichier = 'http://monsite.fr/host/' .$nom_fichier ;
$fonction_image = htmlspecialchars($_POST['fonction']);
     //lecture des dimensions de l'image avec son url complète
$img_dimension = getimagesize($url_fichier);
$largeur_image = $img_dimension[0];
$hauteur_image = $img_dimension[1];
$dimensions_completes = $largeur_image.' x '.$hauteur_image;
$taille = filesize ($url_fichier);
$date = date("d-m-Y");
$ip_posteur = $_SERVER["REMOTE_ADDR"];
$code = htmlspecialchars($_POST['code']);
								

mysql_query("INSERT INTO table VALUES('', '" . $nom_fichier . "', '" . $dimensions_completes . "', '" . $taille . "', '" . $date . "', '" . $fonction_image . "', '" . $ip_posteur . "', '" . $code . "')") or die(mysql_error());


En faisant mes tests, je n'ai ni message d'erreur, ni le résultat que je souhaiterai obtenir.
Encore merci, je continue mes petites recherches ^^

Ah ouais, le détail, mon site est chez Free...
0
Riku Asakura Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 28 novembre 2010 1
1 févr. 2009 à 01:22
Non non je ne le verrais pas.
J'ai déjà un élément qui doit s'afficher si tout fonctionne correctement.
Or ici ça ne s'affiche pas.

En gros la condition est que si 'POST url' existe alors je fais le traitement du champs URL, et j'affiche ensuite un résultat... donc ici c'est comme si la condition d'existant de POST url n'était pas vérifiée...

C'est ça qui me perturbe...
J'aurais préféré un message d'erreur à la limite XD

Je peux fournir le code complet, mais il est très très très long, et produit par un novice... donc pas forcément très propre.

Merci encore à vous deux.
Je suis encore en train de faire des tests, en général ça ne résiste pas longtemps.


EDIT : ne cherchez pas plus, j'ai fait une faute de frappe, mon champ s'appelait "ulr" au lieu de "url"... c'est dingue le temps qu'on perd pour des bêtises...
Maintenant j'ai plein de message d'erreur ! *est content*
Merci encore à vous, je pense que j'ai vu mon erreur grâce à vos interventions ;)

A la prochaine
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
2 févr. 2009 à 09:12
De rien de rien...
ulr au lieu de url : c'est vrai que sa peut passer inaperçu.
Voila pourquoi j'aime les IDE. Sa te l'indique quand tu code, et sa t'évite de chercher partout.
0