Php 还记得表单提交时的文件上载吗

Php 还记得表单提交时的文件上载吗,php,jquery,forms,codeigniter,Php,Jquery,Forms,Codeigniter,我正在使用codeigniter和jquery创建一个表单,该表单接受文本值和单个文件上传。 我希望这样,如果表单验证失败,用户仍然可以看到上传的图像,但我现在不知道如何做到这一点而不出现问题 我当前的解决方案是上传图像,不管表单是否经过验证,然后检查是否存在与$\文件中名称相同的文件,并提供该文件。但这让我想到了复制品的问题。我将重复的文件名附加一个数字(例如file2.jpg),但这意味着上传的文件将始终找到图像名“file.jpg”,即使用户上传的文件名为“file3.jpg” 必须有一种

我正在使用codeigniter和jquery创建一个表单,该表单接受文本值和单个文件上传。 我希望这样,如果表单验证失败,用户仍然可以看到上传的图像,但我现在不知道如何做到这一点而不出现问题

我当前的解决方案是上传图像,不管表单是否经过验证,然后检查是否存在与$\文件中名称相同的文件,并提供该文件。但这让我想到了复制品的问题。我将重复的文件名附加一个数字(例如file2.jpg),但这意味着上传的文件将始终找到图像名“file.jpg”,即使用户上传的文件名为“file3.jpg”


必须有一种更简单的方法。

如何使用哈希名称md5(name+actualTimestamp)保存文件并将此文件名保存到用户会话(您可以将此文件名保存在Cookie中,或使用会话mysql表和序列化的会话数据)。

如何为表单分配唯一的id,可能是年、月、日、小时的组合,分钟和秒,然后将上传的图像移动到服务器上的临时目录,使用与表单id相同的名称保存图像

您的代码应该类似于:

<form method="post" action="process.php">

<input type="hidden" name="form_id" value="<?php if(isset($_POST['form_id'])){ echo $_POST['form_id']; }else{ echo date("Ymdhis"); }" />

<!-- other form objects goes here -->

</form>


“检查是否存在与$\u文件中的名称相同的文件,并提供该文件”-这没有任何意义。如果目标文件夹中已经存在一个文件
foo.jpg
,并且用户上载了一个名为
foo.jpg
的文件,这并不意味着它们实际上是同一个图像,一点也不。是的,我明白,这就是我所说的,这是我当前解决方案存在的问题。很高兴提供帮助;)(顺便说一句,您可以将此答案标记为有助于帮助具有相同问题的其他人;)