web-dev-qa-db-fra.com

Attacher des fichiers de serveur existants à filefield

Comment définir un chemin de fichier existant pour un champ de fichier, dans Drupal 7? La seule option que je vois est de télécharger à nouveau le fichier.

Dans Drupal 6, FileField Sources semble faire cela.

FileField Paths ou IMCE ainsi que le champ de fichier permettent-ils l'attribution des fichiers du serveur?
Existe-t-il une API pour gérer par programme les champs de fichiers?

Modifier
Je viens de découvrir que cela peut tout se faire avec le module média. J'ai également mediaelement installé. Cependant, ce n'est pas complètement intuitif, voici donc les étapes que j'ai suivies:

Importer dans la bibliothèque multimédia: /admin/content/media/import

Créer un mediafile asset champ. Cela vous permet de joindre à partir de la bibliothèque.

Les formats d'affichage (par exemple pour l'audio) sont à /admin/config/media/types/manage/audio/display/, au lieu du type de contenu "gérer l'affichage" qui ne fournit que "grand", "petit", "aperçu", etc.

7
brian_d

J'essaierais Media et ses modules associés. C'est une évolution de FileField Sources , et fournit la plupart du même type de fonctionnalités bien qu'avec Drupal 7 champs.

3
Kim Pepper

FileField Sources a été porté pour D7 et c'est super. Il y a aussi un module appelé Visual select file ce qui ajoute abbiliti pour la sélection basée sur Nice Views des fichiers existants (bon pour les images).

3
Bobík

J'ai choisi IMCE en combinaison avec IMCE pour FileField (D7) parce que le client avait besoin d'une sélection rapide et sans faille des fichiers téléchargés avec ftp - et ceci sans les dupliquer pour chaque nœud.

Pour autant que je vois, les sources Filefield dupliquent toujours les fichiers joints pour le moment. L'importateur fourni par Media le fait également.

3
phils

Je peux vous aider à joindre un fichier à un fichier. Cependant, je n'ai pas tenté d'obtenir un widget de saisie semi-automatique pour obtenir le fichier que vous souhaitez attacher au champ de fichier.

vous pouvez utiliser file_get_contents() pour récupérer le fichier que vous souhaitez joindre, puis utiliser file_save_data pour le récupérer dans Drupal. Le problème est que vous devrez modifier l'état du fichier que vous venez d'ajouter afin de pouvoir le joindre à un nœud plus tard. Sinon, vous obtiendrez une erreur de validation.

$file = file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAME);

db_update('file_managed')
  ->fields(array('status' => 0))
  ->condition('fid', $file->fid, '=')
  ->execute();

Une fois que le formulaire est soumis avec le fid comme valeur pour le champ de fichier que vous voulez que le fichier joint au statut des fichiers gérés sera automatiquement mis à jour.

Consultez http://api.drupal.org/api/drupal/includes--file.inc/group/file/7 pour plus de référence.

2
Jepedo

Vous pouvez toujours opter pour l'approche File as Node et utiliser un champ de référence Node + Formateurs personnalisés ( pour rendre le Node en tant que fichier) pour ce faire, ce qui vous permettrait de mettre à jour le nœud de fichier et d'avoir toutes les références de ce nœud de fichier mis à jour à tous les niveaux.

Dans D6, vous pouvez également utiliser Relations avec les nœuds pour fournir une bibliothèque de fichiers et Formateurs 4 Node Champ de référence pour formater le nœud comme n'importe quel formateur FileField disponible.

1
Decipher

Les sources FileField n'ont pas encore été portées vers Drupal 7, mais c'est prévu. Voir problème correspondant sur drupal.org .

1
Pierre Buyle