Загрузить несколько изображений, PHP - PullRequest
1 голос
/ 19 марта 2012

Мне нужно изменить форму загрузки изображений, чтобы я мог загрузить более одного изображения (6, если быть точным). Я попытался добавить другой вход и изменить значение имени, как это было предложено другими, но оно все еще отображается с тем же изображением, дублированным с первого входа. Я знаю, что это, вероятно, что-то простое, но я не разработчик PHP, поэтому я не смог найти решение.

Вот код для загрузки изображений:

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') {
        $tempext = explode('.', $_FILES['image']['name']);
        $tempext = strtolower($tempext[count($tempext) - 1]);
        switch($tempext) {
            case 'jpg':
            case 'jpeg':
                $ext = '.jpg';
                break;
            default:
                $ext = false;
        }

        if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) {
            $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no';
        } else {
            $imagesuccess = 'no';
        }
    }

А для ввода:

<div class="control-container<?php if((isset($_FILES['image']) && !empty($_FILES['image']['name']))) echo ' error'; ?>">
            <label for="image">Large Image</label>
            <div class="multifield">
                <?php 
                if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . '.jpg')) {
                    echo '<img src="/img/profiles/' . $id . '.jpg?' . rand() . '" width="310px" />';
                }
                ?>
                <input type="file" name="image" id="image" />
            </div>
</div>

Любая помощь будет высоко ценится.

Спасибо

Ответы [ 5 ]

4 голосов
/ 19 марта 2012

Вам потребуется несколько полей вводаS:

<input type="file" name="image1" />
<input type="file" name="image2" />
etc...

и доступ к каждому отдельному файлу с помощью:

$_FILES['image1'][...]
$_FILES['image2'][...]
etc...

, или вы можете использовать ярлык для обозначения массива, специфичный для PHP:

<input type="file" name="image[]" />
<input type="file" name="image[]" />

и

$_FILES['image']['tmp_name'][0];
$_FILES['image']['tmp_name'][1];
etc...

Обратите внимание, что при использовании записи массива PHP делает каждую отдельную точку данных в массиве файлов своим собственным массивом.Вместо того чтобы объединять данные файла в один массив, каждый отдельный бит распределяется по нескольким массивам.

2 голосов
/ 19 марта 2012

если у вас есть 6 файловых входов в вашей форме, $ _FILES должен содержать массив внутри. Проверьте это с print_r($_FILES) внутри вашего файла обработки.

0 голосов
/ 08 февраля 2013

@ Райан Я думаю, что ваша проблема может быть связана с HTML, почему вы не используете один вход, он будет делать то, что вы хотите, например,

<form method="post" enctype="multipart/form-data">
    <input name="file[]" type="file" multiple="true"><br />
    <input type="submit" />
  </form>
0 голосов
/ 19 марта 2012

Основной фрагмент для загрузки нескольких изображений:

<html>
<?php
define("UPLOAD_DIR", "/path/to/uploads/");

for ($i = 0; $i < count($_FILES["file"]["tmp_name"]); $i++) {
  if (is_uploaded_file($_FILES["file"]["tmp_name"][$i])) {
      move_uploaded_file($_FILES["file"]["tmp_name"][$i], UPLOAD_DIR . $_FILES["file"]["name"][$i]);
  }
}
?>
<body>
  <form method="post" enctype="multipart/form-data">
    <input name="file[]" type="file" /><br />
    <input name="file[]" type="file" /><br />
    <input name="file[]" type="file" /><br />
    <input type="submit" />
  </form>
</body>
</html>
0 голосов
/ 19 марта 2012

Если вам нужно загрузить больше этого файла, просто измените элемент name.Например, вы можете добавить дополнительные поля ввода с помощью JavaScript.Каждый элемент будет иметь name="images[]", и после отправки вы можете просто увидеть, что вы получили по var_dump( $_FILES ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...