web-dev-qa-db-fra.com

Comment télécharger un fichier depuis un module personnalisé?

J'essaie de créer un module de base pour Drupal 8, où j'ai ajouté un formulaire avec des champs de texte et plusieurs éléments de téléchargement de fichiers. Maintenant, sur "submitForm", j'enregistre les valeurs des champs de texte dans la base de données, mais Je ne sais pas comment enregistrer les champs d'image. Je n'enregistrerai que le nom de fichier dans la base de données.

Sera-t-il en utilisant la même fonction que nous avons dans Drupal 7?

4
parth.k

Si vous téléchargez un fichier, il le stocke temporairement dans la table file_managed dans la base de données.Et vous devez définir l'état permanent du fichier 1 pour l'enregistrer de manière permanente, sinon il sera supprimé de la table par cron après quelques temps.
Cet exemple de code pour charger une image et l'enregistrer dans la base de données peut vous aider à comprendre.

/* Fetch the array of the image file stored temporarily in database */
$image = $form_state->getValue ('image');

/* Load the object of the image file by it's fid */
$file = File::load ($image[0]);

/* Set the status flag permanent of the image file object */
$file->setPermanent();

/* Save the file in database ( "managed_file" table) */
$file->save();

lorsque vous sélectionnez un fichier dans le type de champ 'managed_file', drupal créez une entrée dans la table 'file_managed', il vous suffit de définir le drapeau permanent comme ci-dessus pour décider si vous devez le sauvegarder définitivement ou non.

8