我上传了POST的文件,它似乎工作正常,但在我转到下一页后,我无法使用该文件与全局变量中的位置:$ _FILES [“myfile”] [“tmp_name” ] 因为它是空的。我不知道为什么,我之前使用过这段代码而且工作得很好......
以下是代码:
WWW / step1.php
if (isset($_POST["check_if_press"]) && $_POST["check_if_press"] == "Upload")
{
if (!empty($_FILES["myfile"]["tmp_name"]))
{
header("Location: ./step2_1.php");
}else echo "Please select a file";
}
<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
Upload file: <input type='file' name='myfile' /><br />
<input type='Submit' name='check_if_press' value='Upload' />
</form>
WWW / step2_1.php
echo $_FILES["myfile"]["tmp_name"];
现在我在屏幕上打印出NULL。
当我使用没有参数的POST时:
action="<?php echo $PHP_SELF
但是:
action="./step2.php"
相反,它有效,但我无法使用上传检查。
谢谢,
Yonatan。
答案 0 :(得分:3)
该文件仅出现在帖子范围内的$_FILES
中。这里发生的事情是:
step1
step1
正在对文件执行某些操作,然后告诉用户转到step2
(通过位置标头)step2
发出GET请求,未发布任何已发布的文件您需要将文件直接发布到step2
(您说工作,只是没有step1
的逻辑)并将您的服务器端文件检查逻辑在那里,或者在step1
中将文件存储在服务器上的某个位置(将其保存到文件系统,将其存储在数据库中,可能将其存储在我不建议的会话中,等等)。由step2
访问。
step2
是来自step1
的完全独立的请求,无法访问step1
范围内的任何内容。
答案 1 :(得分:0)
临时文件会在您的帖子脚本末尾删除,因此您需要在重定向之前将其复制到其他位置:
if (!empty($_FILES["myfile"]["tmp_name"]))
{
//COPY THE FILE TO ANOTHER LOCATION HERE...
header("Location: ./step2_1.php");
}else echo "Please select a file";
}