2009-08-10 37 views
8

Tengo dificultades para entender cómo escribir un módulo con un formulario que cargue archivos, en Drupal 6. ¿Alguien puede explicar esto, o señalarme un buen ejemplo/documentación discutiéndolo?Howto: Formulario de carga de archivos Drupal

EDIT:

Aquí es del todo lo que yo estoy tratando de hacer:

  1. usuario carga un .csv
  2. módulo lee la primera línea del archivo para obtener campos
  3. El usuario coincide con campos csv con campos db
  4. Cada línea de csv se guarda como un nodo (vista previa primero)

Hasta ahora, puedo hacer 1, 2 y 4 con éxito. Pero no está claro exactamente cómo los pasos deberían interactuar entre sí ($ form_state ['redirect'], cómo debería usarse eso) y cuáles son las mejores prácticas. Y para 3, ¿debería guardar eso como datos de sesión?

¿Cómo paso los datos del archivo entre los diversos pasos?

Sé que node_import existe, pero nunca funcionó para mí, y mis solicitudes de error se ignoran.

segundo EDIT: He utilizado este al comienzo y al final de cada página que tenía que tratar con el archivo:

$file = unserialize($_SESSION['file']); 
//alter $file object 
$_SESSION['file'] = serialize(file); 

No estoy seguro de él Es mejores prácticas, sino que ha estado trabajando.

Respuesta

12

Esto no es demasiado difícil, se puede ver información here. Un ejemplo de un formulario con solo una carga de archivo.

function myform_form($form_state) { 
    $form = array('#attributes' => array('enctype' => 'multipart/form-data')); 
    $form['file'] = array(
     '#type' => 'file', 
     '#title' => t('Upload video'), 
     '#size' => 48, 
     '#description' => t('Pick a video file to upload.'), 
    ); 
    return $form; 
} 

EDIT:

ahora para guardar el archivo de utilizar la función file_save_upload:

function myform_form_submit($form, $form_state) { 
    $validators = array(); 
    $file = file_save_upload('file', $validators, 'path'); 
    file_set_status($file, FILE_STATUS_PERMANENT); 
} 

segundo EDIT:

Hay un montón de preguntas y formas de hacer las cosas que describes No entraré demasiado en el código real de cómo manejar un archivo csv. Lo que sugeriría es que use la identificación del archivo para hacer un seguimiento del archivo. Eso te permitiría crear URLs que toman un fid y usarlo para cargar el archivo en el que deseas trabajar. Para pasar de su formulario al siguiente paso, puede usar la propiedad de formulario #redirect para llevar a sus usuarios al siguiente paso. Desde allí realmente depende cómo haces las cosas, qué necesitarás hacer.

+0

sí, no tengo ninguna dificultad. Sin embargo, una vez que se carga el archivo, ¿cómo lo guarda y lo utiliza en futuras funciones? –

+0

después de la edición: ok, y ahora si quisiera, por ejemplo, mostrar los valores del archivo en la página? –

+1

Puede ser un poco más preciso. Renderizar una imagen, video o archivo txt requerirá enfoques muy diferentes. ¿Qué estás tratando de hacer, eso no se puede hacer con el campo de archivo de CCK? De todos modos $ file será el objeto de archivo, por lo que debería poder hacer lo que desee. – googletorp

Cuestiones relacionadas