0

问题是:有没有办法让它与 SESSION array 一起工作?

因为我已将 $_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)
  }
}
4

2 回答 2

2

从手册中引用

如果该文件未被移走或重命名,则该文件将在请求结束时从临时目录中删除。

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

于 2013-10-29T05:49:59.843 回答
0
  1. 您必须使用 move_uploaded 文件保存文件

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

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

  4. 您可以使用$_SESSION["test"][count($_SESSION["test"] - 1]. 如果您上传的是单个文件,则使用$_SESSION["test"][1].

于 2013-10-29T05:33:03.683 回答