Jetez un œil à file_save_upload () et aux fonctions qui l'appellent.
La fonction gérera la validation du fichier et l'enregistrera dans un nouvel emplacement. Dans Drupal 7, cela ajoute également le fichier à la table file_managed.
Notez que le fichier sera stocké en tant que fichier temporaire, assurez-vous donc de définir le statut du fichier sur permanent par la suite.
Vous souhaiterez probablement implémenter la fonction file_save_upload dans le crochet de validation de votre formulaire (avant le gestionnaire de soumission), afin que vous puissiez alerter l'utilisateur si le téléchargement du fichier a échoué ou ne répond pas à vos exigences de validation.
Si le nom du champ d'image que vous essayez de valider est image
, alors le premier paramètre de file_save_upload doit être image, en tant que tel:
$ path = file_save_upload ('image', ...);
Cette fonction renvoie ensuite le chemin sur le serveur sur lequel l'image a été téléchargée (vous pouvez par exemple stocker ce chemin dans un champ de base de données personnalisé).
$form['#attributes']['enctype']
dans Drupal 7. Il est pris en charge automatiquementmultipart/form-data
for drupal 7, il est intégré à drupal 7 lorsque vous utilisez un champ de fichier.$file === null
, ce qui signifie queno file was uploaded
(selon les spécifications: api.drupal.org/api/drupal/includes!file.inc/function /… ) Que dois-je faire dans ce cas? Comment puis-je déboguer ce genre de chose?J'ai une fonction de validation générique que j'utilise principalement dans les thèmes qui doivent prendre en charge le téléchargement d'images. Vous pourrez peut-être l'utiliser tel quel ou avec des modifications mineures, mais cela devrait vous mener loin.
En utilisant cette fonction, vous obtiendrez le chemin de fichier comme gestionnaire de soumission de la valeur dans le formulaire. Vous voudrez peut-être l'ID de fichier à la place, selon votre utilisation.
la source