将$ _FILE数组复制到$ _SESSION数组,并使用$ _SESSION数组上传文件

时间:2015-12-04 22:15:10

标签: php html file session session-variables

我正在尝试在我的服务器的目录中上传文件.pdf(现在​​我正在使用localhost)。

使用带有其他参数的表单(字符串和mySQL查询结果)选择文件,然后使用POST方法将其传递给另一个名为controllaData.php的页面;在controllaData.php中我需要对其他数据执行某些操作,但不对文件执行操作,因此要存储文件信息,我将$ _FILE数组复制到$ _SESSION数组。现在使用函数头(位置:)我转到页面uploadFile.php上传文件,但在这里我不能这样做因为函数move_uploaded_file()返回False因为我没有使用a传递文件POST方法。 有人知道如何解决它吗?一些替代功能?

1 个答案:

答案 0 :(得分:1)

当您提交带有要上传的文件的表单时,您不仅要发布文件名,还要发布您没有存储在任何地方的文件数据,这就是move_uploaded_file返回错误的原因。最好的方法是将文件移动到某个位置并将新文件路径保存到会话变量,这样当您需要处理该文件时,您可以使用此新路径来访问它。这样:

您正在从用户表单上传myfile到服务器上传目录(myfile-> tempfolder-> uploads):

<?php
$uploads_dir = '/uploads';
$tmp_name = $_FILES["myfile"]["tmp_name"];
$name = $_FILES["myfile"]["name"];
if(move_uploaded_file($tmp_name, "$uploads_dir/$name") ){
    $_SESSION["uploaded_file"] =  "$uploads_dir/$name";
}
?>

完成处理后:

   file_get_contents( $_SESSION['uploaded_file'])