如何正确发送 $_FILES 到 $_SESSION 变量?

时间:2021-07-04 15:59:52

标签: php html file session session-variables

我最近开始使用 PHP 开发图像上传 Web 应用程序,我计划在从以前的表单中获取一个 $_FILES 变量后将其发送到另一个表单。

例如: form1 有一个 <input type="file" name="image">。之后, form2 使用 $_FILES['image'] 获取并希望通过 form3 将其发送给 $_SESSION['image'] = $_FILES['image']

问题是,在我尝试使用该会话变量 move_uploaded_file() 后,文件没有移动到目录中。我的 upload 目录(我在其中存储所有图像)是空的。

这就是我尝试移动文件的方式:

$file = "upload/".$link.".".pathinfo($_SESSION['file']['name'], PATHINFO_EXTENSION);
move_uploaded_file($_SESSION['file']['tmp_name'], $file);

不要担心$link。这只是我在链接中使用的一些“关键”(一种自动生成链接的方法)。

我还尝试声明另一个 $_FILES 变量并为其分配 $_SESSION['file'] 的值,然后在 move_uploaded_file() 中使用它,但仍然无效。

我的问题是:是否可以将 $_FILES 变量正确传递给 $_SESSION?如果是的话,它怎么会在我的情况下不起作用。我做错了什么?

如果您需要更多代码和(或)信息,请随时发表评论,我会尽快提供给您。

1 个答案:

答案 0 :(得分:3)

问题是 $_FILES 数组只指向保存文件的临时位置。它不直接包含文件数据。

在您的初始请求结束后,该临时文件会自动删除。因此,虽然 $_FILES 可能会保留在会话中,但实际文件本身却不是。您需要在初始请求期间将其保存在某处(使用 move_uploaded_file()),然后将保存文件的引用放入会话中,而不是原始 $_FILES 数据。

相关问题