使用SESSION数组而不是$ _FILES上传文件?

时间:2013-10-29 05:15:18

标签: php session file-upload

问题是:是否有任何方法可以使它与SESSION数组一起使用?

因为我已将$ _FILES [“file”]分配给SESSION数组,所以它不会上传文件。当我使用var_dump($ _ SESSION ['test'] [1] [“tmp_name”])和var_dump($ _ FILES [“file”] [“tmp_name”])时,它将显示相同的值。任何想法的家伙?

//THIS WONT WORK
    $_SESSION['file'][] = $_FILES["file"];
    $_SESSION['file'][] = $_FILES["file2"];
    foreach($_SESSION['file'] as $index => $name){
       move_uploaded_file($_SESSION['file'][$index]["tmp_name"], "images/" . $rename);
    }
//THIS WORKS OK
    move_uploaded_file($_FILES["file"]["tmp_name"],
    "images/" . $rename);

现在好几句我为什么需要使用会话...我需要使用会话,因为我有多个文件,我想通过foreach语句上传。

// print_r($ _ SESSION [“file”])将输出:

array(1) {
  [0]=>
  array(5) {
    ["name"]=>
    string(8) "face.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(31) "C:\EasyPHP-12.1\tmp\php882C.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(22398)
  }
}

2 个答案:

答案 0 :(得分:1)

Quote from the manual

  

该文件将从临时目录中删除   请求是否尚未移走或重命名。

对于在AJAX脚本末尾添加的每个新文件,您必须move_uploaded_file()。如果您不希望孤立的文件存在,可以在提交表单之前将它们移动到临时目录中,并定期清理目录。

答案 1 :(得分:0)

  1. 您必须使用move_uploaded file

  2. 保存文件
  3. 检查$_SESSION["test"]是否存在。如果没有,请创建它,$_SESSION["test"] = array();

  4. $_SESSION["test"][] = "images/" . $rename;

  5. 您可以使用$_SESSION["test"][count($_SESSION["test"] - 1]访问上次上传的文件。如果您上传了单个文件,则使用$_SESSION["test"][1]引用该文件不正确。