我有多个具有相同名称的输入字段。他们看起来像:
<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它必须遍历所有输入字段并进行上传。
提前致谢!
答案 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
}
请参阅此链接以了解更多信息:
答案 2 :(得分:0)
声明一个数组并将其等同于$arr =new array();
$arr = $_POST["img[]"];
之类的帖子数据,并使用for循环可以循环遍历数组