Howto:Drupal文件上传表单

Nic*_*ner 8 php upload drupal file

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

编辑:

这完全是我想要做的:

  1. 用户上传.csv
  2. 模块读取文件的第一行以获取字段
  3. 用户将csv字段与db字段匹配
  4. 每个csv行都保存为节点(首先预览)

到目前为止,我可以成功地完成1,2和4.但目前还不清楚这些步骤应该如何相互影响($ form_state ['redirect']?应该如何使用?),以及最佳实践是什么.对于3,我应该将其保存为会话数据吗?

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

我知道node_import存在,但它从来没有对我有用,我的bug请求被忽略了.

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

$file = unserialize($_SESSION['file']);
//alter $file object
$_SESSION['file'] = serialize(file);
Run Code Online (Sandbox Code Playgroud)

我不确定它是最好的做法,但它一直在工作.

goo*_*orp 12

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

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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

现在保存文件使用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);
}
Run Code Online (Sandbox Code Playgroud)

第二次编辑:

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