我的客户希望有一个3页的表格。第一页允许用户输入包括上传文件的数据。第二页确认了这些数据。第三页将数据提交给数据库和目录。
通过post,我可以继续将数据保存到隐藏的输入字段,这没问题。我的问题是上传的文件。如何在页面之间保存该文档?我正在使用Cakephp,但任何建议都会有所帮助,谢谢
答案 0 :(得分:1)
你总是可以创建表单使用三个不同页面的内容。使用AJAX接受并验证/请求用户确认其提交的数据。如果在此视图中他们接受它,则启动POST以提交所有数据。
您实际上不需要三个不同的文件来实现此目的,但您仍然可以让它分三个阶段出现,让您的客户满意。
答案 1 :(得分:0)
您只需将文件上传到临时目录,并将值保存在隐藏变量中,就像其他表单数据一样。如果表单成功提交,则将图像复制到所需位置,否则删除图像
答案 2 :(得分:0)
您可以使用CSS轻松伪造这3页。甚至2,因为“第三页”实际上是一个与浏览器中的页面无关的服务器脚本。
只需制作表单,然后在提交按钮上添加一个事件,将div更改为他想要的“确认页面”。然后使用此页面上的按钮实际发送表单。
这就是全部
答案 3 :(得分:-1)
上传的文件总是暂时保留。服务器env var应该告诉你它在哪里。在Ruby的机架中,它存储在params var中。所以我猜在php中有一个类似的params var,其中包含所有必要信息的哈希值。
答案 4 :(得分:-1)
由于文件将在第一步上传,因此一个选项是将文件的位置与其余数据一起放入隐藏的输入字段中(或者将其放入会话)。使用CakePHP,如果您的文件字段看起来像那样:
<input type="file" name="data[User][image]" id="UserImage" />
然后您将能够通过
捕获位置$location = $this->data['User']['image']['tmp_name'];
对应类似 / var / tmp / xxxxxx
的内容在最后一页上,如果用户确认了所有数据,您只需使用 move_uploaded_file()将文件放在服务器上的任意位置。
move_uploaded_file($location, '/new/location');