Submitted by bobca on
Bonjour / bonsoir à tous,
Mon site commence à prendre tournure, donc il se remplit. Bien.
Cela dit tous les fichiers attachés tombent dans le dossier drupal/files, ça m'ennuie j'aurais préféré que chaque livre range les fichiers attachés des diverses pages dans des dossiers différents (plus simple pour les téléchargements). Je crains un peu d'avoir + de 200 fichiers dans le dossier files ...
Quel module sait faire ça ?
Bonjour, J'ai le même
Permalien Soumis par elodie30 le 3 Juillet, 2008 - 10:32
Bonjour,
J'ai le même problème que toi ...
As-tu trouvé une solution?
Salut, J'ai réglé ce
Permalien Soumis par spinozandraque le 4 Juillet, 2008 - 10:44
Salut,
J'ai réglé ce problème en créant une page avec un code php qui gère lui même l'upload de fichier :
le formulaire et le code de l'upload se trouvant dans la même page, sinon la page n'est plus reconnu comme un contenu de Drupal.
Voici un exemple simple d'upload. Vous pouvez (et devez) ajouter des controle sur la taille (et les extensions sur le fichier) afin de sécuriser les uploads :
<?php /* Si le formulaire a été validé <em>/
if( isset($_POST['sub']) )
{
/</em> On récupère le nom du fichier <em>/
$fichier = basename($_FILES['depot']['name']);
/</em> On récupère l'extension du fichier, ex : ".txt" <em>/
$extension = strrchr($fichier, '.');
/</em> On enlève l'extension au nom du fichier <em>/
$fichier = preg_replace('#([a-z0-9_-]+).[a-z0-9]{2,4}#','$1', $fichier);
/</em> On insère le timestamp au nom du fichier (juste avant l'extension)<em>/
$time = time();
$nom_fichier = $fichier.$time.$extension;
/</em> On récupère la source à télécharger <em>/
$source = $_FILES['depot']['tmp_name'];
/</em> On définie dans quel répertoire sera stocker le fichier <em>/
$dossier = "files/mon_repertoire/".$nom_fichier; // Attention, les répertoires doivent exister et être en droit 755(minimum)
if ( move_uploaded_file($source,$dossier) ) //Si la fonction renvoie TRUE, l'upload à fonctionné
{
chmod ( $dossier , 0755 ); // Droit du fichier uploadé
echo $nom_fichier.' a été uploadé.';
}
{else //Sinon (la fonction renvoie FALSE).
{
echo $nom_fichier."n'a pas été uploadé !";
}
}
else /</em> Si le formulaire n'a pas été validé, on l'affiche */
?>
<form method="POST" action="" enctype="multipart/form-data">
<table>
<tr>
<td colspan=2><input type="file" name="depot" size="40"></td>
<input type="hidden" name="sub" value="OK">
</tr>
<tr>
<td colspan=2>
<input type="submit" name="envoyer" value="uploader">
</td>
</tr>
</table>
</form>
<?php
}
?>
Merci beaucoup pour ce
Permalien Soumis par elodie30 le 4 Juillet, 2008 - 13:50
Merci beaucoup pour ce code.
Mais où l'insères-tu? dans un fichier séparé (comme tu fais le liens ac drupal, dans le fichier template.tpl.php???
En faite, je place ce code
Permalien Soumis par spinozandraque le 4 Juillet, 2008 - 15:31
En faite, je place ce code dans un fichier ("upload.php") que je place ensuite dans le dossier de Drupal.
Ensuite, je crée une Page (mais tu peux le mettre dans un autre type de contenu) et je met dans le body :
<?php include('upload.php'); ?>
avec le Format d'entrée : PHP code (il faut l'interpréteur PHP).
Ce qui fait que j'ai un formulaire unique pour tous les uploads.
Remarque : si tu as plusieurs type d'upload à faire, tu peux faire plusieurs Page de ce genre.
Maintenant, si tu veux attacher ces fichiers à un contenu en particulier, il faut que tu modifies la base de donnée de Drupal afin d'enregistrer ton fichier et l'attacher dans la bd. En gros, si tu as créé un contenue ayant la node $nid, le code ressemble à peut près à ceci :
Le module upload doit être installé pour avoir la table file de crée.
Ensuite, insert, après la ligne
, le code :
<?php
$nid = 12; // Ici je prend comme exemple un contenu ayant pour node 12.
/* Connexion à la base <em>/
global $db_url;
db_connect($db_url);
/</em> On détermine le prochain fid de disponible <em>/
db_query("INSERT INTO <code>intellicast_groupware</code>.<code>files</code> (<code>fid</code> ,<code>nid</code> ,<code>filename</code> ,<code>filepath</code> ,<code>filemime</code> ,<code>filesize</code>) VALUES ('".$fid."', '".$nid."', '".$nom_fichier."', '".$dossier."', 'file/video', '".filesize($dossier)."');");$data=db_fetch_array(db_query("SELECT fid FROM <code>files</code> ORDER BY fid DESC ;"));
$fid = $data['fid']+1;
/</em> On enregistre le fichier dans la table file : il est alors attaché au contenue de node $nid */
?>
Attention, j'ai réutilisé les variables du code que j'ai mis.
Voilà, j'espère que ça t'aideras.
Bonjour, J'aimerais ajouter
Permalien Soumis par xavier_gomez le 5 Juin, 2009 - 14:27
Bonjour,
J'aimerais ajouter un champ qui permet de joindre un fichier, lorsqu'un utilisateur veut créer un nouveau compte.
J'ai activé le module profil pour les informations des utilisateurs, j'ai ajouté les champs Nom, Prénom, Adresse, etc... mais j'aimerais maintenant qu'ils puissent joindre un fichier (CV) avec leur inscription. J'ai le module upload qui est installé.
Comment est-ce que je peux faire ça ?
D'avance merci beaucoup si vous avez une solution.
Bonne après-midi
Xavier
Bonjour Xavier, J'ai
Permalien Soumis par cryalex le 27 Avril, 2010 - 05:18
Bonjour Xavier,
J'ai exactement le meme probleme que toi. As-tu trouve une solution?
Il y a un module upload path
Permalien Soumis par zmove le 4 Juillet, 2008 - 15:34
Il y a un module upload path qui est fait pour cela.
Merci beaucoup à vous
Permalien Soumis par elodie30 le 4 Juillet, 2008 - 16:11
Merci beaucoup à vous deux.
Le module est en cours de développement mais merci du tuyau.
Je déjà utilisé il y a
Permalien Soumis par zmove le 4 Juillet, 2008 - 16:58
Je déjà utilisé il y a plusieurs mois, il fonctionnait bien. Je pense qu'il est suffisament avancé pour être testé.
Il est maintenant
Permalien Soumis par graou le 24 Juillet, 2008 - 21:34
Il est maintenant opérationnel, apparement.
Bonjour à tous, Il y a un
Permalien Soumis par Thib le 30 Avril, 2010 - 09:49
Bonjour à tous,
Il y a un excellent module pour ça c'est Filefield Paths :
http://drupal.org/project/filefield_paths
Cordialement,
Thib
bonjour, j’ai galéré depuis
Permalien Soumis par nasma le 24 Août, 2010 - 10:32
bonjour,
j'ai galéré depuis hier pour un pb de chemin chu sur windows
là c'est reglé il dit fichier a été uplodé mais dans le dossier il y'a rien
qu'en penses tu?