Мне нужно загрузить несколько изображений через форму. Я думал, что сделаю это без проблем, но у меня есть.
Когда я пытаюсь сделать foreach и получить изображение по изображению, это не действует, как я надеялся.
HTML
<form method="post" action="" enctype="multipart/form-data" id="frmImgUpload"> <input name="fileImage[]" type="file" multiple="true" /> <br /> <input name="btnSubmit" type="submit" value="Upload" /> </form>
PHP
<?php if ($_POST) { echo "<pre>"; foreach ($_FILES['fileImage'] as $file) { print_r($file); die(); // I want it to print first image content and then die to test this out... //imgUpload($file) - I already have working function that uploads one image } }
Что я ожидал от него, чтобы распечатать первое изображение, вместо этого он печатает имена всех изображений.
пример
Array ( [0] => 002.jpg [1] => 003.jpg [2] => 004.jpg [3] => 005.jpg )
Что я хочу, чтобы он выводил
Array ( [name] => 002.jpg [type] => image/jpeg [tmp_name] => php68A5.tmp [error] => 0 [size] => 359227 )
Итак, как я могу выбрать изображение по изображению в цикле, чтобы я мог загрузить их все?
Okey Я нашел решение, и именно так я это сделал, возможно, не лучшим образом, но он работает.
foreach ($_FILES['fileImage']['name'] as $f) { $file['name'] = $_FILES['fileImage']['name'][$i]; $file['type'] = $_FILES['fileImage']['type'][$i]; $file['tmp_name'] = $_FILES['fileImage']['tmp_name'][$i]; $file['error'] = $_FILES['fileImage']['error'][$i]; $file['size'] = $_FILES['fileImage']['size'][$i]; imgUpload($file); $i++; }
Вы в основном задаете вопрос о том, как перестроить массив $_FILES
для доступа к $_FILES
их как одного массива.
$index = 0; $field = 'fileImage'; $keys = array_keys($_FILES[$field]); $file = array(); foreach($keys as $key) { $file[$key] = $_FILES[$field][$key][$index]; } print_r($file);
измените значение $index
на значение, необходимое для выбора определенного файла.
этот массив сформирован по-другому
это что-то вроде этого:
array ( 'name' => array ( [0] => 'yourimagename', [1] => 'yourimagename2', .... ), 'tmp_file' => array ( ....
что shoud сделать это:
foreach ($_FILES['fileImage']['name'] as $file) { print_r($file); die(); // I want it to print first image content and then die to test this out... //imgUpload($file) - I already have working function that uploads one image }