我的表单太多了。其中一个领域是如下:为什么我无法使用PHP中的Session上传文件?
<form action="go_to_preview.php" role="form" method="post" enctype="multipart/form-data">
<input type="file" name="equip_image" id="equip_image">
</form>
现在文件go_to_preview.php
的目的是显示用户在标签的形式填写的数据。所有填写的数据也包含在隐藏字段中。此表单上还有一个提交按钮。如果用户发现他/她已填写的内容是完美的,则用户单击文件go_to_preview.php
上的提交按钮。只要用户点击提交按钮,我就会将通过$_POST
收到的数据添加到数据库中。 现在我的问题是我无法从包含文件控制的页面上载用户选择的文件。随着$_POST
(这是目前数据的数组到隐藏字段),我要送的$_FILES
阵列中的会话如下:
//go_to_preview.php
session_start();
$_SESSION['FILES'] = $_FILES;
//final.php
session_start();
$files_var = $_SESSION['FILES'];
//use $files_var
unset($_SESSION['FILES']);
到目前为止一切顺利。现在,当我提交表单时,我必须将所选文件上传到服务器。为此,我在final.php文件中编写了以下逻辑:
move_uploaded_file($_SESSION['FILES']['equip_image'], $target);
unset($_SESSION['FILES']);
函数得到正确执行,但文件没有上传到服务器。 有人可以在这方面帮助我吗? 在此先感谢。 如果你没有得到我的疑问清楚你也可以参考我的以下问题,让我的问题的明确的想法: How to get the $_FILES array data as it is after form submission in following scenario?
@Flosculus:为了得到清晰的想法,你可以参考我的问题http://stackoverflow.com/questions/25752228/how-to-get-the-files-array-data-as-it-is-after- form-submission-in-following-sc – user2839497 2014-09-10 10:23:41
对不起,我删除了那条评论,因为我忘记了文件数据实际上并没有存储在'$ _FILES'中。尽管如此,你是否将上传的文件移至永久的地方?因为它仅在创建请求期间是暂时的。 – Flosculus 2014-09-10 10:25:09
为了澄清,您正在将图像移动到会话中,然后尝试在稍后的请求中从同一会话中检索图像?问题是PHP会话可能非常短暂,所以你会遭受频繁的数据丢失。如果你想做异步上传,你最好使用队列 - 比如PHPResque。如果你无法做到这一点,那么至少应该使用一个天真的实现,将图像移动到一个文件夹中,并将该文件夹视为一个队列。上传文件后 – 2014-09-10 10:25:17