|
|
|
|
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>
Configuration: Windows Vista Firefox 3.0.5
Bah je comprends pas trop, ou alors ce n'est pas compliqué.
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? What's tiny, and yellow and very very dangerous????? A canary with the super-user password. Mouhahahaha |
Merci pour ta réponse.
$_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... |
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. |
Non non je ne le verrais pas.
|