在Drupal 6中,我很难弄清楚如何编写一个带有上传文件的模块的模块.任何人都可以解释一下,或者指出一个很好的例子/文档来讨论它吗?
编辑:
这完全是我想要做的:
>用户上传.csv
>模块读取文件的第一行以获取字段
>用户将csv字段与db字段匹配
>每个csv行都保存为节点(首先预览)
到目前为止,我可以成功地完成1,2和4.但目前还不清楚这些步骤应该如何相互影响($form_state [‘redirect’]?应该如何使用?),以及最佳实践是什么.对于3,我应该将其保存为会话数据吗?
如何在各个步骤之间传递文件数据?
我知道node_import存在,但它从来没有对我有用,我的错误请求被忽略了.
第二次编辑:我在每个需要处理文件的页面的开头和结尾使用了这个:
$file = unserialize($_SESSION['file']); //alter $file object $_SESSION['file'] = serialize(file);
我不确定它是最好的做法,但它一直在工作.
这不是太难,你可以看到一些信息
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表单属性让您的用户进入下一步.从那里确实取决于你做什么,你需要做什么.