Eche un vistazo a file_save_upload () y las funciones que lo llaman.
La función manejará la validación del archivo y lo guardará en una nueva ubicación. En Drupal 7, esto también agrega el archivo a la tabla file_managed.
Tenga en cuenta que el archivo se almacenará como un archivo temporal, así que asegúrese de establecer el estado del archivo en permanente después.
Probablemente desee implementar la función file_save_upload dentro del enlace de validación de su formulario (antes del controlador de envío), para que pueda alertar al usuario si la carga del archivo falló o no cumplió con sus requisitos de validación.
Si el nombre del campo de imagen que está intentando validar es image
, entonces el primer parámetro de file_save_upload debería ser image, como tal:
$ ruta = file_save_upload ('imagen', ...);
Esta función devolverá la ruta en el servidor en el que se cargó la imagen (por lo que puede almacenar esa ruta en un campo de base de datos personalizado).
$form['#attributes']['enctype']
en Drupal 7. Se ocupa automáticamentemultipart/form-data
para drupal 7, está construido en drupal 7 cuando usas un campo de archivo.$file === null
, lo que significa queno file was uploaded
(de acuerdo con las especificaciones: api.drupal.org/api/drupal/includes!file.inc/function / ... ) ¿Qué debo hacer en ese caso? ¿Cómo puedo depurar este tipo de cosas?Tengo una función de validación genérica que uso principalmente en temas que necesitan soportar la carga de imágenes. Es posible que pueda usarlo como tal o con pequeños cambios, pero esto debería llevarlo lejos.
Con esta función, obtendrá la ruta del archivo como el valor en el controlador de envío de formularios. Es posible que desee la identificación del archivo, dependiendo de su uso.
fuente