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

Copy a $_FILE array to a $_SESSION array and make the upload of a file using the $_SESSION array

我正在尝试在我的服务器目录中上传一个 .pdf 文件(现在我正在使用本地主机)。

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

当您提交带有要上传文件的表单时,您不仅发布了文件名,还发布了您没有存储在任何地方的文件数据,这就是 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'])