POST验证失败后,在输入上保存图像

时间:2018-03-29 12:45:58

标签: php

我有一个我提交的表单,其中包含其他输入,图像输入如下:

<label id="labelEnviarImagem" for='enviarImagem'>Choose a file &#187;</label><br>
<input required type="file" name="productFile" id="enviarImagem">

我的问题如下:

有时,表单中的其他输入无效,PHP会将用户返回到表单页面,同时保存$_SESSION上的先前值,以便用户预先填写表单并且无需重新输入所有内容即可修复错误。我怎样才能为图像做同样的事情?

我试图将图像保存在会话中,然后将其作为值传递给输入,但显然它没有用。

$_SESSION["dadosProduct"]["img"] = $_FILES['productFile']['tmp_name'];

<input required type="file" name="productFile" value="<?php echo isset($_SESSION['dadosProduct']) ? $_SESSION['dadosProduct']['name'] : ""; ?>" id="enviarImagem">

我的问题是:我可以在输入类型为文本/数字时使用$_SESSION轻松保存信息,如何在input type="file"时执行相同的操作?

1 个答案:

答案 0 :(得分:1)

  

我试图将图像保存在会话中

您尝试这样做有两个问题。

垃圾收集

您正在将文件名存储在会话中,但只要脚本完成the file will be deleted,您就会存储不再存在的文件的名称。

您需要将文件存储在更永久的位置(并在经过一段时间后实现自己的垃圾收集以进行清理)。

文件输入

文件输入旨在从托管浏览器的计算机上传文件。

将其值设置为服务器上文件的路径是没有意义的(并且无论如何都无法设置文件输入的值)。

您需要提供其他类型的用户界面。

这可能只是一个简单的段落,表明文件名称whatever.ext已存储在用户的会话中。