PHP 遍历具有相同名称的输入字段,上传所有
PHP loop through input fields with same name, upload all
我有多个同名的输入字段。它们看起来像:
<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 它必须遍历所有输入字段并进行上传。
提前致谢!
要迭代所有文件,请使用 foreach 循环
foreach($_FILES['image-to-upload']['tmp_name'] as $key => $tmp_name)
{
//Code
}
查看此 link 以获得更多理解:
PHP Multiple File Array
使用 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);
}
声明一个数组并将其等同于您的 post 数据,例如 $arr =new array();
$arr = $_POST["img[]"];
并且使用 for 循环您可以遍历您的数组
我有多个同名的输入字段。它们看起来像:
<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 它必须遍历所有输入字段并进行上传。
提前致谢!
要迭代所有文件,请使用 foreach 循环
foreach($_FILES['image-to-upload']['tmp_name'] as $key => $tmp_name)
{
//Code
}
查看此 link 以获得更多理解:
PHP Multiple File Array
使用 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);
}
声明一个数组并将其等同于您的 post 数据,例如 $arr =new array();
$arr = $_POST["img[]"];
并且使用 for 循环您可以遍历您的数组