Php 将上载的文件从一页传送到另一页

Php 将上载的文件从一页传送到另一页,php,html,cakephp,post,Php,Html,Cakephp,Post,我的客户想要一份3页的表格。第一页允许用户输入数据,包括上传的文件。第二页证实了这一数据。第三个页面将数据提交到数据库和目录 通过post,我可以将数据保存到隐藏的输入字段中,这没有问题。我的问题是上传的文件。我如何将文档逐页保存?我正在使用Cakephp,但任何建议都会有所帮助,谢谢上传的文件总是暂时保留。服务器环境变量应该告诉您它在哪里。在Ruby的框架中,它存储在params var中。因此我猜php中也有一个类似的params var,它有一个包含所有必要信息的散列。由于文件将在第一步上

我的客户想要一份3页的表格。第一页允许用户输入数据,包括上传的文件。第二页证实了这一数据。第三个页面将数据提交到数据库和目录


通过post,我可以将数据保存到隐藏的输入字段中,这没有问题。我的问题是上传的文件。我如何将文档逐页保存?我正在使用Cakephp,但任何建议都会有所帮助,谢谢

上传的文件总是暂时保留。服务器环境变量应该告诉您它在哪里。在Ruby的框架中,它存储在params var中。因此我猜php中也有一个类似的params var,它有一个包含所有必要信息的散列。

由于文件将在第一步上载,一个选项是将文件的位置与其余数据一起放在一个隐藏的输入字段中(要么在那里,要么把它放在会话中)。使用CakePHP,如果您的文件字段看起来有点像:

<input type="file" name="data[User][image]" id="UserImage" />
这将对应于类似于/var/tmp/xxxxxx的内容

在最后一页上,如果用户确认了所有数据,您只需使用移动上传的文件()将文件放在服务器上您想要的任何位置

move_uploaded_file($location, '/new/location');

您只需将文件上载到temp目录,并像其他表单数据一样将值保留在隐藏变量中。如果表单成功提交,则图像将复制到所需位置,否则请删除图像。

您始终可以创建表单正在使用三个不同页面的错觉。使用AJAX接受并验证/request用户确认他们提交的数据。如果在此视图中,他们接受它,则启动POST以提交所有数据


你真的不需要三个物理上不同的文件来实现这一点,但你仍然可以让它分三个阶段出现,以使你的客户满意。

你可以很容易地使用CSS伪造这三个页面。甚至是两个,因为“第三个页面”实际上是一个服务器脚本,与浏览器中的页面无关

只需制作表单,然后在提交按钮上放置一个事件,将div更改为他想要的任何“确认页面”。然后使用此页面上的按钮实际发送表单


仅此而已

我不得不质疑,为什么你需要3页来呈现/验证/提交表单。你真的只需要1页。你呈现页面,当他们单击“提交”时,你进行验证。如果不进行验证,你将再次呈现同一页,指出哪些字段无效。至于文件,除非整个表单都已被验证,否则你不会上传它sed验证。你曾经为某人做过工作,他们想要你完全不同意的东西吗?这就是其中之一。所以你说只要我将tmp_名称的位置存储在一个隐藏的文件中。我应该没事吧?我不确定文件是否保证在请求之间保留在PHP的tmp目录中…@Ivo取决于e站点是托管的。在典型的linux环境中,tmp目录只有在重新启动后才被清理(根据FHS),因此文件不太可能在过程中消失。但是,如果有疑问,您可以创建一个自定义临时目录,文件可以在其中停留任意时间。@numerical25出于安全原因,我建议将位置存储在会话变量中,而不是隐藏的表单字段中。我的服务器只保留发布期间tmp目录中的tmp文件。页面刷新后,该文件将消失。来自未确认表单的文件如何?服务器仅临时存储该文件,当我到达下一页时,该文件不再存在。
move_uploaded_file($location, '/new/location');