Загрузка изображений с предварительным просмотром не работает

0

У меня есть один файл с именем test.php. В этом файле я написал ниже коды для загрузки изображения (.PNG и.JPG). Я также добавляю некоторый код, чтобы сделать предварительный просмотр изображений перед загрузкой... Ничто не кажется неправильным, но когда я нажимаю кнопку SUBMIT, ничего не происходит... Почему? Где моя проблема?

Обновление: я вношу изменения, и теперь я получаю это предупреждение: Предупреждение: неверный аргумент, предоставленный foreach() в...

test.php:

<script type="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> 
<body>

<?php
if ( isset( $_POST[ 'submit' ] ) ) {

    define ("UPLOAD_DIR" , "uploaded/pic/");

    foreach ($_FILES["images"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {

            $name = $_FILES["images"]["name"][$key];

            $info = getimagesize($_FILES["images"]["tmp_name"][$key]);
            $image_type = $info[2];

            $type = $_FILES['images']['type'][$key];

            // if the image is .JPG or .PNG
            if ( ($image_type == 3) ||  ($image_type == 2) ){

                // ensure a safe filename
                $name = preg_replace("/[^A-Z0-9._-]/i", "_", $name);

                // don't overwrite an existing file
                $i = 0;
                $parts = pathinfo($name);
                while (file_exists(UPLOAD_DIR . $name)) {
                    $i++;
                    $name = $parts["filename"] . "-" . $i . "." . $parts["extension"];
                }

                // preserve file from temporary directory
                $success = move_uploaded_file($_FILES["images"]["tmp_name"][$key], UPLOAD_DIR . $name);

                if (!$success) { 
                    echo "<p>Unable to save file.</p>";
                    exit;
                }

                // set proper permissions on the new file
                chmod(UPLOAD_DIR . $name, 0644);
                echo "<h2>Successfully Uploaded Images</h2>";
            }
            else{
                echo "<h2>format not supported... </h2>";   
            }
        }
    }
}
?>

<div id="upload_form">

    <form id="frm1" name="frm1" method="post" action="test.php" enctype="multipart/form-data">

      <p>
        <label for="images">insert your image</label>
        <input type="file" name="images" id="images" tabindex="80"/>
      </p>

      <img id="pic" name="pic" src="#" />

      <button type="submit" id="submit" name="submit">Upload Files!</button>

    </form>

    <script type="text/javascript" language="javascript">
      // Preview the picture before Uploading on the server!
         function readURL(input) {
            if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#pic').attr('src', e.target.result);
            }

            reader.readAsDataURL(input.files[0]);
            }
        }

        $("#images").change(function(){
            readURL(this);
        });
     </script>
  </div>
  • 0
    Я видел в некоторых случаях, когда <button type="submit" id="submit"> Upload File! </button> не сработает. Попробуйте вместо этого использовать <input type="submit" id="submit" value="Upload File!"> , Посмотрите, работает ли это. Если нет, то проблема, очевидно, в другом.
  • 0
    Попробуйте эту "именованную" версию <input type="submit" id="submit" name="submit" value="Upload File!"> Или <button type="submit" id="submit" name="submit"> Upload File! </button> почти уверен, что это сработает, поскольку при использовании вашего if(isset($_POST['submit'])) ищет "именованную" кнопку, которая не названа.
Показать ещё 6 комментариев
Теги:

1 ответ

1
Лучший ответ

Вам нужно поместить ваше name="images в виде массива, используя []

Как это:

<input type="file" name="images[]" id="images" tabindex="80"/> 
  • 0
    @ ha.M.ed Добро пожаловать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню