在这些条件下,您是否有一个优雅的解决方案来验证服务器端包含多个输入类型文件的表单:
在我的示例中,我们采用包含1个输入类型文本和2个输入类型文件的表单。
<input type="text" name="title" />
<input type="file" name="file1" />
<input type="file" name="file2" />
用户提交有效的标题,有效的文件1但无效的文件2.
此处的目标是保存每个有效文件,直到表单有效或会话到期或某些内容过期为止:)
建议1
为用户表单生成唯一键(即form123)创建目录/ tmp / uploads / form123,保存有效文件。
每10分钟运行一次的cron遍历/ tmp / uploads /中的所有目录,并删除现有的目录超过10分钟。
有了这个建议,最大的问题是如果用户放弃表格,如何清理系统。
答案 0 :(得分:0)
我认为你的建议是正确的。跟踪用户的有效/无效条目(您甚至不必将其保存到磁盘,只需获取引用并将其存储在$_SESSION
全局),然后根据该条目调整表单。
如果表单无效,请将提交的有效文件存储在$_SESSION
<?php
// ... if the form is invalid
if (isset($_SESSION['file_1']) { ?>
<!-- show a placeholder -->
<!-- i.e. something saying 'file 1' and its name or whatever -->
<?php } else { ?>
<!-- show the input -->
<?php } ?>
然后,当表单最终有效时,将您在$_SESSION
中存储的值与提交的信息结合起来,以生成最终的有效表单。