如何正确地将 $_FILES 发送到 $_SESSION 变量?
How to send $_FILES to $_SESSION variable properly?
我最近开始在 PHP 中开发图像上传 Web 应用程序,并且我计划将 $_FILES
变量从之前的表单中获取后发送到另一个表单。
例如:
form1
有一个 <input type="file" name="image">
。在那之后,
form2
使用 $_FILES['image']
获取它并希望通过 $_SESSION['image'] = $_FILES['image']
.
将其发送到 form3
问题是,在我尝试 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
?如果是,为什么它在我的情况下不起作用。我做错了什么?
如果您需要更多代码和(或)信息,请随时发表评论,我会尽快提供给您。
问题是$_FILES
数组只指向保存文件的临时位置。它不直接包含文件数据。
在您的初始请求结束后,该临时文件将自动删除。因此,虽然 $_FILES
可能会保留在会话中,但实际文件本身却不会。您需要在初始请求期间将其保存在某处(使用 move_uploaded_file()
),然后将对已保存文件的引用放入会话中,而不是原始 $_FILES
数据。
我最近开始在 PHP 中开发图像上传 Web 应用程序,并且我计划将 $_FILES
变量从之前的表单中获取后发送到另一个表单。
例如:
form1
有一个 <input type="file" name="image">
。在那之后,
form2
使用 $_FILES['image']
获取它并希望通过 $_SESSION['image'] = $_FILES['image']
.
form3
问题是,在我尝试 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
?如果是,为什么它在我的情况下不起作用。我做错了什么?
如果您需要更多代码和(或)信息,请随时发表评论,我会尽快提供给您。
问题是$_FILES
数组只指向保存文件的临时位置。它不直接包含文件数据。
在您的初始请求结束后,该临时文件将自动删除。因此,虽然 $_FILES
可能会保留在会话中,但实际文件本身却不会。您需要在初始请求期间将其保存在某处(使用 move_uploaded_file()
),然后将对已保存文件的引用放入会话中,而不是原始 $_FILES
数据。