2014-05-06 2 views
0

Est-ce que quelqu'un sait comment je peux avoir des utilisateurs anonymes (essentiellement tous les visiteurs de mon site sont anonymes car je ne traite pas les inscriptions d'utilisateurs) télécharger un fichier (.docx par exemple) sur mon site Drupal 7? Ai-je besoin d'un module Drupal spécial (impossible à trouver) ou d'un hack PHP ...Téléchargement de fichier anonyme dans Drupal?

Répondre

1

Vous pouvez écrire un module personnalisé avec un bloc. Le bloc rend un formulaire avec un uploader de fichier en utilisant le formulaire api. Lorsque le formulaire est soumis (par un utilisateur anonyme ou authentifié), vous pouvez enregistrer le fichier dans le système de fichiers public. Voici un exemple de la façon dont le code du formulaire pourrait ressembler:

function mymodule_some_form($form, &$form_state) { 
    $form['some_file'] = array(
    '#type' => 'managed_file', 
    '#title' => t('A File'), 
    '#default_value' => variable_get('some_file'), 
    '#upload_location' => 'public://', 
); 

    return $form; 
} 

Lorsque la forme présente, enregistrez le fichier:

function mymodule_some_form_submit($form, &$form_state) { 
    $values = $form_state['values']; 

    // Save the uploaded file 
    if (isset($values['some_file']) && $values['some_file']) { 

    // Do the below to make it permanent otherwise 
    // the file will get deleted when cron runs 
    $file = file_load($values['healthcheck_image']); 
    file_usage_add((object)$file, 'mymodule', 'mymodule', 1); 

    if (!$file->status) { 
     $file->status = FILE_STATUS_PERMANENT; 
    } 

    file_save($file); 

    // Save file id to variables 
    variable_set('some_file', $file->fid); 
    } 
} 
+0

Je suis peu familiarisés avec le développement Drupal. Merci pour le code mais y a-t-il un module facile à utiliser? J'ai entendu dire que le module WebForm supporte les pièces jointes. De toute façon, toute aide serait appréciée ... – Asterix

+1

C'est OK! Oui, le module webform fera ce dont vous avez besoin. Téléchargez et activez le module, puis créez un noeud de formulaire Web. Une fois que vous avez fait cela, vous pouvez cliquer sur l'onglet 'webform' sur le noeud nouvellement créé ajouter un composant 'fichier'. Cela permettra aux utilisateurs de télécharger un fichier. Faites-moi savoir si vous avez plus de problèmes! – andyhails

Questions connexes