Allegare file server esistenti a filefield


7

Come si imposta un percorso file esistente per un campo file, in Drupal 7? L'unica opzione che vedo è di caricare nuovamente il file.

In Drupal 6, FileField Sources sembra fare questo.

Does FileField percorsi o IMCE insieme a campo File di assegnazione di file del server?
Esiste un'API per gestire a livello di programmazione i campi di file?

Modifica
Ho appena scoperto che tutto ciò può essere fatto con il modulo multimediale. Ho anche installato l' elemento multimediale . Tuttavia non è completamente intuitivo, quindi ecco i passaggi che ho preso:

Importa in libreria multimediale: /admin/content/media/import

Crea un mediafile assetcampo. Ciò ti consente di collegarti dalla libreria.

I formati di visualizzazione (esempio per l'audio) sono disponibili al /admin/config/media/types/manage/audio/display/posto del tipo di contenuto "gestisci display" che fornisce solo "grande", "piccolo", "anteprima", ecc.

Risposte:


3

Vorrei provare Media e i suoi moduli associati. È un'evoluzione delle fonti FileField e fornisce la maggior parte dello stesso tipo di funzionalità anche se con i campi Drupal 7.


3

Ho scelto IMCE in combinazione con IMCE per FileField (D7) perché il client necessitava di una selezione rapida e poco rigida dei file caricati con ftp - e questo senza duplicarli per ciascun nodo.

Per quanto vedo le fonti di Filefield al momento duplicano sempre i file allegati. Anche l'importatore fornito da Media lo fa.



2

Posso aiutarti ad allegare un file a un file. Tuttavia, non ho tentato di ottenere un widget di completamento automatico per ottenere il file che si desidera allegare al campo file.

puoi usare file_get_contents()per prendere il file che vuoi allegare e poi usare file_save_data per farlo entrare in Drupal. Il problema è che dovrai cambiare lo stato del file che hai appena aggiunto in modo da poterlo collegare a un nodo in un secondo momento. In caso contrario, otterrai un errore di convalida.

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

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

Una volta inviato il modulo con il fid come valore per il campo file che si desidera allegare allo stato dei file gestiti verrà aggiornato automaticamente.

Controlla http://api.drupal.org/api/drupal/includes--file.inc/group/file/7 per ulteriori riferimenti.


Sembra molto promettente. Due domande veloci: 1) Per collegarsi successivamente a un nodo, $node = node_load($nid); $node->field_myfilefield[$node->language][0] = $file; node_save($node); dovrebbe funzionare? 2) Presumo che dovrei reimpostare lo stato 1dopo aver effettuato il collegamento al nodo? O fa node_savequesto per me? Grazie!
brian_d,

I tuoi presupposti sono corretti sul salvataggio del nodo. Tuttavia, ripristinando automaticamente lo stato su 1, non dovrai preoccuparti di farlo manualmente. Ho lottato con questo per un po 'poiché non c'era una funzione per aggiungere un file alla tabella dei file gestiti senza impostare lo stato su 1. L'ho usato in un'operazione batch che scarica i file da un altro server e li collega ai nodi sul mio sito Drupal. Da un lato non se si utilizza un batch, quindi non è possibile utilizzarlo file_get_contents()non riuscirà. Si dovrebbe usare drupal_http_request().
Jepedo,

Ripensandoci, non sono sicuro che node_save cambi lo stato in 1. Nell'esempio a cui mi riferivo ho usato drupal_form_submit () per assicurarmi che node_save abbia superato la convalida. In tal caso lo stato è stato aggiornato automaticamente a 1. Potrebbe essere necessario aggiornarlo manualmente nel tuo caso. È probabile però che node_save () si comporti allo stesso modo.
Jepedo,

1

Puoi sempre scegliere l'approccio File as Node e utilizzare un campo Riferimento nodo + Formatter personalizzati (per rendere il nodo come file) per fare ciò, che ti consentirebbe di aggiornare il nodo File e avere tutti i riferimenti di quel nodo File aggiornati su tutta la linea.

In D6 è inoltre possibile utilizzare Node Relationships per fornire un campo Riferimento nodo libreria e file di formattazione 4 Formatters per formattare il nodo come qualsiasi formattatore FileField disponibile.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.