0

Всем доброго времени суток, решил попробовать реализовать прогресс бар когда идет отправка изображение в БД, вроде бы бар сам отображается а полоска не заполняется. Пытаюсь понять в чем причина то ли ошибка в ajax не так сделал запрос или в чем то еще. Для интереса решил глянуть что происходит при отправке файла и увидел 404 ошибку то пытаюсь понять как она возникает. Буду благодарен за любой совет введите сюда описание изображения

Код:

    <!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Load page</title>
    <link rel="stylesheet" href="./Css/Loadpage.css">
    <script src="./Jquery/jquery-3.4.1.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head> <body> <div class="new-product">

&lt;form  method=&quot;post&quot;  id=&quot;progress_form&quot; enctype=&quot;multipart/form-data&quot;&gt;


    &lt;div class=&quot;form-group&quot;&gt;
        &lt;label for=&quot;image&quot;&gt;Image&lt;/label&gt;
        &lt;input type=&quot;file&quot; name=&quot;image&quot; id=&quot;choose-file&quot; accept=&quot;image/png,image/jpeg,image/tiff&quot;&gt;
        &lt;span id=&quot;error&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;input type=&quot;submit&quot; class=&quot;new-button&quot; id=&quot;save&quot; name=&quot;save&quot; value=&quot;Save&quot;&gt;

&lt;/form&gt;
&lt;div class=&quot;form-group&quot; id=&quot;process&quot; style=&quot;display: none;&quot;&gt;
    &lt;div class=&quot;progress&quot;&gt;
        &lt;div class=&quot;progress-bar progress-bar-striped active&quot; role=&quot;progressbar&quot; aria-valuemin=&quot;0&quot; aria-valuemax=&quot;100&quot;&gt;

        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

</div> <span id="success_message"></span>

&lt;div id=&quot;big-card&quot;&gt;
    &lt;?php foreach ($products as $product) {?&gt;

        &lt;div class=&quot;card&quot;&gt;
            &lt;img src=&quot;Uploads/&lt;?=$product['image']?&gt;&quot; height=&quot;300px&quot; width=&quot;300px&quot; class=&quot;card-img-top&quot; alt=&quot;...&quot;&gt;

        &lt;/div&gt;

    &lt;?php }?&gt;
&lt;/div&gt;



<script>

$(document).ready(function (){
    $('#progress_form').on('submit', function (event){
        event.preventDefault();
            $.ajax({
                url:&quot;new_image.php&quot;,
                method:&quot;POST&quot;,
                data: $(this).serialize(),
                dataType:&quot;json&quot;,
                contentType:false,
                cache:false,
                processData:false,
                beforeSend: function ()
                {
                    $('#save').attr('disabled', 'disabled');
                    $('#process').css('display', 'block');

                },
                success: function (data)
                {
                    let percentage = 0;

                    let timer = setInterval(function () {
                        percentage = percentage + 20;
                        progress_bar_process(percentage, timer, data);
                    }, 1000);
                }
            })

    });

    function progress_bar_process(percentage, timer, data)
    {
        $('.progress-bar').css('width', percentage + '%');
        if (percentage &gt; 100)
        {
            clearInterval(timer);
            $('#progress_form')[0].reset();
            $('#process').css('display', 'none');
            $('.progress-bar').css('width', '0%');
            $('#save').attr('disabled', false);
            $('#success_message').html(data);
            setTimeout(function (){
                $('#success_message').html('');
            },5000);
        }
    }

});

</script>

<script src="./JS/functions.js"></script> </body> </html>

Код new_image.php:

<?php
require_once '../DB_connect/db_connection.php';

move_uploaded_file($_FILES['image']['tmp_name'],'../Uploads/' . $_FILES['image']['name']);

$query = 'INSERT INTO table_images (image) VALUES(:image)';
$product = $pdo-&gt;prepare($query);
$product-&gt;execute([
    'image' =&gt; $_FILES['image']['name'],
]);


header('location:../index.php');

Yurii
  • 25

1 Answers1

1

404 Not Found - стандартный код ответа HTTP о том, что клиент был в состоянии общаться с сервером, но сервер не может найти данные согласно запросу.

Если по-русски, у вас задан неправильный путь до файла new_image.php. Нужно задать корректный путь в url:"new_image.php",

  • Хмммм я как раз об этом подумывал только задумывался как правильно задать путь, я так понимаю должен выглядеть так: http://localhost:63342/test.loc/Test_task_load_picture/controllers/new_image.php – Yurii Jan 14 '21 at 16:43
  • 1
    @Yurii это надо смотреть на структуру проекта - раз, на то, в чём пишется код (фреймворк, cms) - два, какая маршрутизация есть в проекте - три. Потому что, если есть маршрутизация - то нужно задавать пути согласно ней. Например во фремворках вот такой путь /user/test обратиться к контроллеру user и методу test. А у вас не знаю. Возможно достаточно задать путь просто относительно файла js. Либо написать url: "/Test_task_load_picture/controllers/new_image.php". Так что это уже вам надо посмотреть. Но проблема именно с путём – Алексей Шиманский Jan 14 '21 at 17:08
  • Спасибо за совет, действительно проблема где то в маршруте так как сейчас поменял и уже 500 ошибка. Буду искать дальше :) – Yurii Jan 14 '21 at 17:15
  • @Yurii да, 500 - это уже ошибки в php скрипте)) Если ответ помог - можно ткнуть галочку напротив ответа) – Алексей Шиманский Jan 14 '21 at 17:19
  • 1
    @Yurii наверняка вам понадобится в будущем: Как и какими средствами находить ошибки в PHP коде? это то, как можно найти ошибки в php коде – Алексей Шиманский Jan 14 '21 at 17:21
  • @Yurii Если ответ помог - ткните галочку рядом с ответом – Алексей Шиманский Jan 16 '21 at 07:51