Upload de fichier et les transférer sur mon Mac

Petit nouveau ! | 5 Messages

14 mai 2012, 22:05

Bonjour à tous, je suis nouveau sur le forum :D

J'ai une petite question à vous poser, J'aimerais créer un site de Partage de fichiers en ligne et sécurisé j'explique mon projet :

J'ai créé mon site en HTML & CSS et je voulais mettre un espace membres (Jusque la rien de bien compliqué =D> )
Dans cet espace membres je voulais que chaque membres possèdent une page à lui contenant un bouton Upload (Pour uploader des fichiers, les héberger) avec un code qui définira. Voici le code que j'ai pour le moment
<form method="post" action="reception.php" enctype="multipart/form-data">
     <label for="icone">Icône du fichier (JPG, PNG ou GIF | max. 15 Ko) :</label><br />
     <input type="file" name="icone" id="icone" /><br />
     <label for="mon_fichier">Fichier (tous formats | max. 1 Mo) :</label><br />
     <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
     <input type="password" name="nom" value="valeur par defaut" />
     <input type="file" name="mon_fichier" id="mon_fichier" /><br />
     <label for="titre">Titre du fichier (max. 50 caractères) :</label><br />
     <input type="text" name="titre" value="Titre du fichier" id="titre" /><br />
     <label for="description">Description de votre fichier (max. 255 caractères) :</label><br />
     <textarea name="description" id="description"></textarea><br />
     <input type="submit" name="submit" value="Envoyer" />
</form>
J'aimerais que quand l'on appuie sur "Envoyer" que un lien de téléchargement apparaisse et quand on clique dessus il faut avoir le mot de passe définit plutôt ! Et que quand on appuie sur le bouton, le fichier sois hébergé sur mon ordi dans un dossier ! (Ne n'est pas a des fins malicieuses mais c'est juste que la je veut juste faire des testes aprés je louerais un serveur 8-) )

J'espere que vous pourrais m'aider

Cordialement

Jimbonbon

ViPHP
AB
ViPHP | 5818 Messages

15 mai 2012, 01:06

J'aimerais que quand l'on appuie sur "Envoyer" que un lien de téléchargement apparaisse et quand on clique dessus il faut avoir le mot de passe définit plutôt ! Et que quand on appuie sur le bouton, le fichier sois hébergé sur mon ordi dans un dossier ! (Ne n'est pas a des fins malicieuses mais c'est juste que la je veut juste faire des testes aprés je louerais un serveur 8-) )

J'espere que vous pourrais m'aider

Cordialement

Jimbonbon
C'est bizarre ce fonctionnement. Si tu veux autoriser l'upload de fichiers aux seuls membres authentifiés tu n'as qu'à protéger la page ou le script d'upload par une variable de session qui sera définie lorsque l'utilisateur se sera authentifié...

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

15 mai 2012, 06:58

Je pense qu'il voit la chose à la megaquelquechose qui propose la chose (dans un cadre payant, tu elle le fichier contre x €.).

Le principe de fonctionnement :
- une table d'un sgbd contenant une clef primaire, un champs varchar qui va contenir le lien vers le fichier (l'adresse sur le disque), un champ varchar() pour le mot de passe (varchar(128) pour un sha512 :mrgreen: ) et pourquoi pas un champ descriptions et bien entendu un champ contenant l'identifiant du membre qui a uploadé le fichier ;)
- pour l'upload c'est simple, y un exemple dans la doc de php et sur mon site (par exemple) et AB propose une classe te facilitant la tâche (dans la partie contribution du forum).
- pour restituer le fichier c'est un simple formulaire avec un seul champ visible pour le mot de passe (plus un champ caché pour l'id du fichier)
- l'envoi du fichier ce fait avec la la fonction header

commence la chose et si tu a des soucis on sera encore la ;)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

15 mai 2012, 18:00

Merci beaucoup pour vos réponse ! [

Moogli c'est exactement sa mon projet !

Je m'y connais pas alors qu'est-ce qu'une table d'un sgbd contenant une clef primaire et comment faire un champs varchar qui va contenir le lien vers le fichier (l'adresse sur le disque), un champ varchar() pour le mot de passe (varchar(128) pour un sha512 ) et pourquoi pas un champ descriptions et bien entendu un champ contenant l'identifiant du membre qui a uploadé le fichier
Pour luploader je pense que mon code est bon non ?

Et comment creer un lien de telechargement ?

MERCI BEAUCOUP

Petit nouveau ! | 5 Messages

15 mai 2012, 18:13

<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>
Voila mon PHp

ViPHP
AB
ViPHP | 5818 Messages

15 mai 2012, 18:37

J'ai pas regardé en détail mais à priori ça paraît cohérent. Cela dit c'est le strict minimum et beaucoup trop juste si tu veux faire quelque chose à vocation professionnelle (ou payante). Il faudrait notamment gérer plus d'erreurs et vérifier si un fichier de même nom ne se trouve pas déjà sur le serveur ou alors les renommer... Il y a un tuto ici qui est suivi d'un lien vers une classe complète.

Petit nouveau ! | 5 Messages

15 mai 2012, 18:39

Merci beaucoup je regarde de suite