PHP循环使用相同名称的输入字段,全部上传

时间:2016-12-26 14:34:44

标签: php loops input upload

我有多个具有相同名称的输入字段。他们看起来像:

<input type="hidden" class="image-hidden" name="image-to-upload[]" />
<input type="hidden" class="image-hidden" name="image-to-upload[]" />
<input type="hidden" class="image-hidden" name="image-to-upload[]" />
<input type="hidden" class="image-hidden" name="image-to-upload[]" />
...
...

我上传了这段代码:

<?php
    if(isset($_POST['new-blogpost'])) {
        $img = $_POST['image-to-upload'][0];
        $img = str_replace('data:image/jpeg;base64,', '', $img);
        $img = str_replace(' ', '+', $img);
        $data = base64_decode($img);
        $file = 'image.jpg';
        $success = file_put_contents($file, $data);
    };
?>
问题是,这段代码只会上传第一个输入字段图片。

如何重写我的代码以上传所有输入字段? (我知道在这种情况下我必须给我的文件唯一的名字,但这不是我的问题。我想知道如何告诉PHP它必须遍历所有输入字段并进行上传。

提前致谢!

3 个答案:

答案 0 :(得分:1)

使用foreach循环:

$list = ['apple', 'banana', 'cherry'];

foreach ($list as $value) {
    if ($value == 'banana') {
        continue;
    }
    echo "I love to eat {$value} pie.".PHP_EOL;
}

在您的示例中 - 您的数组的名称为$_POST['image-to-upload'],因此您可以循环显示它:

foreach($_POST['image-to-upload'] as $img) {
    $img = str_replace('data:image/jpeg;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    // $file = 'image.jpg'; // here you need to create the unique filename
    $success = file_put_contents($file, $data);
}

答案 1 :(得分:0)

对于迭代所有文件,请使用foreach循环

foreach($_FILES['image-to-upload']['tmp_name'] as $key => $tmp_name)
    {

      //Code

    }

请参阅此链接以了解更多信息:

PHP Multiple File Array

答案 2 :(得分:0)

声明一个数组并将其等同于$arr =new array(); $arr = $_POST["img[]"]; 之类的帖子数据,并使用for循环可以循环遍历数组