CodeIgniter预览后上传文件

时间:2013-02-28 16:36:36

标签: php file codeigniter file-upload

我的多部分表格的流程基本上是答案表格 - >预览表格 - >上传到数据库

现在我在预览步骤中上传文件,因为POST数据来自实际表单。我的问题是在上传到数据库功能中访问$_FILES一次,因为var_dump($_FILES)array(0) {}内返回upload_to_database()

我想在预览步骤中实际隐藏input[type=file]只是为了让upload_to_database()收到$_FILES,但由于安全原因,这是不可能的。

我该如何解决这个问题?

修改

抱歉,我上面的帖子很模糊。

我实际上想在upload_to_database()函数中上传一次。我认为在预览阶段上传用户文件是不好的做法,不像上传到数据库,他们确信他们的答案。

上传目前在预览中,因为现在它只能在其中运行。一旦我们转到$_FILESupload_to_database()就会为空。

如何从预览到$_FILES获得完整且有用的upload_to_database()

2 个答案:

答案 0 :(得分:1)

您可以在第一步中上传文件(转到预览表单;就像您现在所做的那样),将它们移动到特定的preview目录,并在上传到目标时将它们移动到最终目的地数据库中。

我想您使用类似会话的内容来跟踪发布的数据,以便您可以以相同的方式添加preview文件路径。

然后设置一个简单的cron作业,每隔xx小时删除preview目录中xx小时以上的所有文件。

编辑:另一种方法是在javascript中完全在客户端进行预览,例如在SO上预览问题和答案。

答案 1 :(得分:0)

不可能做这样的事情:

PREVIEW:

upload_to_database($_FILES['userfile']['tmp_name']);

DB:

function upload_to_database($file)
{
  // work with file here
}

我的意思是提供$ _FILES作为upload_to_database函数的参数