如何:Drupal文件上载表单

时间:2009-08-10 04:21:33

标签: php file drupal upload

我很难弄清楚如何编写一个带有上传文件的模块的模块,在Drupal 6中。任何人都可以解释一下,或者给我一个很好的例子/文档来讨论它吗?

修改

这完全是我想要做的事情:

  1. 用户上传.csv
  2. 模块读取文件的第一行以获取字段
  3. 用户将csv字段与db字段匹配
  4. 每个csv行都保存为节点(首先预览)
  5. 到目前为止,我可以成功完成1,2和4。但目前还不清楚这些步骤应该如何相互影响($ form_state ['redirect']?应该如何使用?),以及最佳实践是什么。对于3,我应该将其保存为会话数据吗?

    如何在各个步骤之间传递文件数据?

    我知道node_import存在,但它对我来说从未起作用,我的错误请求也会被忽略。

    第二次编辑:我在需要处理文件的每个页面的开头和结尾都使用了这个:

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

    我不确定这是最佳做法,但它一直在运作。

1 个答案:

答案 0 :(得分:12)

这不是太难,你可以看到一些信息here。仅包含文件上载的表单示例。

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;
}

修改

现在要保存文件,请使用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);
}

第二次编辑:

有很多问题和方法可以完成你描述的事情。我不会深入了解如何处理csv文件的实际代码。我建议您使用文件ID来跟踪文件。这将使您能够制作带有fid的URL并使用它来加载您想要处理的文件。 要从表单进入下一步,您可以使用#redirect表单属性让用户进入下一步。从那里开始真的取决于你做什么,你需要做什么。