move_uploaded_file无法在while循环中上传多个文件

时间:2013-05-07 10:41:35

标签: php file-upload multiple-files

我使用while循环上传多个文件,以下是我的代码,move_uploaded_file总是失败,我收到消息“上传文件错误!”。我使用相同的代码(在没有$ counter的循环中的代码)在其他用例中上传单个文件,这很好用,但是当我在while循环中使用相同的代码时,我认为代码看起来很好,但在{ {1}} ...请告诉我这个问题是什么,我该如何解决?

move_uploaded_file

3 个答案:

答案 0 :(得分:0)

最初重新排列文件以更好地循环它们。

https://gist.github.com/lukeoliff/5531772

可以使这个功能的基础更容易充实。

<?php
  if (!empty($_FILES)) {
    $_FILES = rearrangeFiles($_FILES);
  }
?>

变成以下......

Array
(
    [name] => Array
        (
            [0] => foo.txt
            [1] => bar.txt
        )

    [type] => Array
        (
            [0] => text/plain
            [1] => text/plain
        )

    [tmp_name] => Array
        (
            [0] => /tmp/phpYzdqkD
            [1] => /tmp/phpeEwEWG
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
        )

    [size] => Array
        (
            [0] => 123
            [1] => 456
        )
)

成....

Array
(
    [0] => Array
        (
            [name] => foo.txt
            [type] => text/plain
            [tmp_name] => /tmp/phpYzdqkD
            [error] => 0
            [size] => 123
        )

    [1] => Array
        (
            [name] => bar.txt
            [type] => text/plain
            [tmp_name] => /tmp/phpeEwEWG
            [error] => 0
            [size] => 456
        )
)

答案 1 :(得分:0)

请将功能移到while循环之外..然后再次运行。

答案 2 :(得分:0)

我找到了答案,我发布了这个,以便任何想要多文件上传解决方案的人都可以参考这个

我没有使用while循环,而是以这种方式将其更改为foreach循环

foreach($_FILES['album_pics']['error'] as $key => $error){
  all code remains the same as above in while loop, except every reference to $counter will be replaced by $key 
}