我正在使用expressionsengine 2.x并尝试为前端用户创建一个文件上传表单,其中上传的文件将存储在以登录用户ID命名的文件夹中。我们可以使用saef或safecracker来做到这一点。如果没有,还有其他选择。
答案 0 :(得分:1)
SafeCracker捆绑了一个字段类型SafeCracker File,用于创建文件上传字段。 fieldtype利用您在控制面板中创建的任何File Upload Directories。
默认情况下,上传的所有文件都将存储在“文件上载目录”首选项中指定的目录中。
为了将SafeCracker文件上传到以登录用户标识命名的子文件夹,您可以开发自定义加载项,或利用compatible fieldtype that works with SafeCracker - 如果有存在以满足您的需求。
SafeCracker的替代方案是使用Solspace Freeform Module。但是,即使这样做,您的文件上传仍然会保存到同一个文件上载目标,而不是嵌套在子文件夹中。
答案 1 :(得分:1)
在这种情况下,由于SafeCracker没有任何扩展挂钩,并且没有我知道允许这种特定行为的附加组件,我会制作一份SafeCracker文件并对其进行更改以添加此功能。否则,您只是从头开始使用自己的“上传文件”字段类型。
您需要查看ft.safecracker_file.php中的第148行,并添加一小段代码以检查目录是否存在登录用户的屏幕名称或您拥有的内容({{ 3}}),如果没有,则创建它,然后将该目录名称附加到上传路径:
$data = $this->EE->filemanager->upload_file($this->settings['safecracker_upload_dir'].'/'.$users_directory_name, $field_name);
这应该让你开始我想。