我很难弄清楚如何编写一个带有上传文件的模块的模块,在Drupal 6中。任何人都可以解释一下,或者给我一个很好的例子/文档来讨论它吗?
修改
这完全是我想要做的事情:
到目前为止,我可以成功完成1,2和4。但目前还不清楚这些步骤应该如何相互影响($ form_state ['redirect']?应该如何使用?),以及最佳实践是什么。对于3,我应该将其保存为会话数据吗?
如何在各个步骤之间传递文件数据?
我知道node_import存在,但它对我来说从未起作用,我的错误请求也会被忽略。
第二次编辑:我在需要处理文件的每个页面的开头和结尾都使用了这个:
$file = unserialize($_SESSION['file']);
//alter $file object
$_SESSION['file'] = serialize(file);
我不确定这是最佳做法,但它一直在运作。
答案 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表单属性让用户进入下一步。从那里开始真的取决于你做什么,你需要做什么。