На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > Проблемы с формой загрузки (выбора) файла
      Цитата Руслан @
      ну а перемещать из временного хранилища можно вот такой функцией

      Все никак не могу понять, зачем вообще качать файл на сервер, если он уже там? Ведь если я прописываю путь в файле стилей, то файл никуда не качается, он просто берется прямо из указанной папки. Может есть способ выбрать файл и скопировать путь до него и вставить в текстовое поле?
        Цитата D-G @
        зачем вообще качать файл на сервер, если он уже там?

        :huh:
        Цитата D-G @
        Мне казалось, что вот это указание директории:
        $uploads_dir = 'uploads';
        Она у меня создана, там пусто

        :scratch:

        фантастика. Файл есть, но его там нет... Вам скучно? :huh:
          Цитата Руслан @
          фантастика. Файл есть, но его там нет... Вам скучно?

          Я не правильно пояснил. Хоть там файл и появился после применения вашего второго варианта, но фоновое изображение не применилось. Вы же мою цитату взяли после пробы вашего первого варианта. Меня мало интересует, где находится файл, важно чтоб картинка применилась как фоновое изображение (бэкграунд).
          Поэтому у меня опять вопрос, нет ли способа просто скопировать путь к файлу? Ну или как-то объединить два инпута: один с текстовым полем, другой с выбором файла?
          Сообщение отредактировано: D-G -
            Цитата D-G @
            Поэтому у меня опять вопрос, нет ли способа просто скопировать путь к файлу?

            Браузер изначально не знает, и не может знать какие файлы имеются на сервере. Кнопки "обзор файлов на сервере" (применимой к данной, практической ситуации) - не существует.

            Цитата D-G @
            Поэтому у меня опять вопрос, нет ли способа просто скопировать путь к файлу?

            Есть. Буквально пара строк на JS. Более убогий костыль сложно представить. :facepalm:

            Где тут руки помыть? <_<
            Если "программист" не в состоянии сформулировать даже вопрос, как он сформулирует решение?! :huh: >:(

            Добавлено
            Цитата D-G @
            Может есть способ выбрать файл и скопировать путь до него и вставить в текстовое поле?

            Т.е. требуется отобразить файлы, которые имеются на сервере, и показать их одмину для выбора?
            Если таки да, то glob($dir."*.jp*") - список файлов "*.jp*" на сервере.
            Только вам рано лезть в эти файловые дела. Научитесь отображать хотя бы простые строки, вы путаетесь даже в них, в соседней теме. <_<
              Цитата Руслан @
              Если "программист" не в состоянии сформулировать даже вопрос, как он сформулирует решение?!

              А я где-то сказал, что я программист? Я везде пишу в своих вопросах, что я новичок, и пробую научится, в том числе и формулировать свои мысли и озвучивать термины. Думаю за те 10 дней, что я на форуме, в том числе и с вашей помощью, мои познания стали лучше, мысли четче, код чище.
              Цитата Руслан @
              Есть. Буквально пара строк на JS. Более убогий костыль сложно представить

              Странно, может просто никто не задавался такой целью? Ведь есть функции типа pathinfo, link,,, Да и в отладчике путь к фалу показывает
              Да и в джумле вроде такое реализовано. Не буду, конечно утверждать, но там путь показывает, хотя возможно и с помощью js.

              Добавлено
              Цитата Руслан @
              Научитесь отображать хотя бы простые строки

              Честно говоря, даже не знаю, что такое простые строки... Если типа Хелоу, мир или 2+2, так вроде получается. Ну а многие "простые строки" которые были для меня сложными ещё на той неделе, я уже более менее понимаю и применяю. Хотя конечно,
              Цитата Руслан @
              Если таки да, то glob($dir."*.jp*") - список файлов "*.jp*" на сервере.

              мне возможно и рано.
                Цитата Руслан @
                Если "программист" не в состоянии сформулировать даже вопрос, как он сформулирует решение?!

                И вроде в моем первом посте я довольно четко сказал, что за поле я хочу создать
                Цитата D-G @
                Захотел сделать ещё и поле для использования фонового изображения.

                И вот в следующем тоже вроде видны мои цели:
                Цитата D-G @
                то не работает, видно, что файл выбран, но при нажатии на "Сменить" изображение не применяется
                  Цитата D-G @
                  Захотел сделать ещё и поле для использования фонового изображения.

                  Фактически, на данный момент вы пришли к "выбор изображения из имеющихся на сервере". Хотя в процессе обсуждали загрузку файла на сервер, и изначально использовали <input type="file" - html элемент для загрузки файла на сервер ("отображение списка файлов, имеющихся у клиента").
                  "список файлов на сервере" наглухо !== "список файлов на клиенте"!

                  Цитата D-G @
                  И вот в следующем тоже вроде видны мои цели:

                  Да на здоровье, я ж не против. Делайте! Но имейте в виду, <input type="file" можно использовать как вы хотите, но это будет весьма убогий костыль, который можно применит в локальной машине, но лишенный практической пользы при типичном клиент-серверном взаимодействии. :whistle:
                  Сообщение отредактировано: Руслан -
                    Цитата Руслан @
                    <input type="file" можно использовать как вы хотите

                    Как на ваш взггляд, можно ли для этого использовать данные вот этой статьи, с учетом переименования enctype="multipart/form-data" в type="text"?
                    https://php.net/manual/ru/wrappers.php.php
                    Цитата Руслан @
                    Если таки да, то glob($dir."*.jp*") - список файлов "*.jp*" на сервере.

                    Что-то не могу придумать как под это дело сделать кнопку, чтоб увидеть, что получится.
                      Цитата Руслан @
                      Если "программист" не в состоянии сформулировать даже вопрос, как он сформулирует решение?! :huh: >:(

                      Естественно я все ещё не программист ))) но сейчас уже по другому бы сформулировал свою изначальную проблему, хотя сразу крутились несколько вариантов в заглавии темы приближенных к нужному. Сейчас бы это скорее всего звучало как: "Проблема с формой выбора и применения фонового изображения". Интересно. можно ли сейчас полностью поменять тему? А вообще, спасибо за терпение и подсказки )))

                      Цитата Руслан @
                      Поэтому у меня опять вопрос, нет ли способа просто скопировать путь к файлу?

                      Есть. Буквально пара строк на JS. Более убогий костыль сложно представить.

                      Вы знаете, понаходил несколько вариантов подобных вещей на чистом пхп, все классно работает, но они платные. Одним словом нужно писать вариант експлорера на пхп ))) У меня конечно не полноценный експлорер, но в урезаном виде даже мой вариант уже кое-что может. Сделал этот вариант специально для форума, вдруг кому пригодится. Его можно развивать, скрывать окно со списком картинок,пока их не сканировали, делать картинки как ссылки, множественный выбор с помощью чекбокса и другое. Важен принцип. Рядом с текстовым полем есть клавиша "Обзор" для выбора картинок на сервере. Потом эти картинки выбираются и применяются. Тут вариант без записи в файл стилей, просто для демонстрации моментального применения выбранной картинки. После перезагрузки восстанавливается фон по дефолту.
                      Два файла, один form-forum.php , второй файл стилей main.css для дефолтного стиля, и чтоб удобней располагались окошко выбора и квадрат.
                      form-forum.php
                      ExpandedWrap disabled
                        <head>
                        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                        <link rel="stylesheet" type="text/css" href="main.css">
                        </head>
                         
                        <?php
                        // Вызов функции обработки результатов сканирования
                        if (isset($_POST['find_all_pic']))
                        {find_all_pic('.');}
                        ?>
                        <!--- Проверка нажатия кнопки для счетчика  --->
                        <?php
                        if (isset($_POST['find_all_pic']))
                        {calcul();}
                         ?>
                         
                        <body>
                        <div class="w">
                        <!--- Форма списка,куда должны передаваться результаты для дальнейшего выбора  --->
                        <div class="form">
                        <form action="" method="post">
                        <div style="width:100%; height:150px; overflow:auto; border:solid 1px #C3E4FE;">
                        <?php
                        if (isset($_POST['find_all_pic']))
                        {add_strok();}
                        ?>  <!--- Вызов функции для добавления строк с проверкой нажатия кнопки --->
                        </div>
                         <input type="submit" name="vibor_for_change" value="Выполнить">
                        </form>
                        </div>
                        <div class="wrap"></div>
                        </div>
                        </body>
                        <?php
                        function calcul()
                          {
                          global $matchV; global $pic_on; global $parth_on;
                                $calc=count($parth_on);      
                                 echo "Найдено $calc файла(ов)";
                           }
                         
                        // Функция добавления строк в список
                        function add_strok()
                           {
                         global $pic_on; global $parth_on;
                           for ($i=0; $i<count($parth_on); $i++)  // по идее доолжна была проверять количество строк (элементов массива и быть счетчиком)
                              {
                              echo "
                              <input type=\"radio\" name=\"strok\" value=\"$parth_on[$i]\" />
                        <div style=\"display:grid; grid-template-columns:80% 20%; \">
                        <div style=\" grid-column: 1 / 1;\">$parth_on[$i]</div>
                        <div style=\"grid-column: 2 / 2;\">$pic_on[$i]</div></div><br>
                              ";
                              }
                           }
                        //  Функция длля сканирования всех картинок
                        function find_all_pic($dir)
                        {
                          global $pic_on; global $parth_on;
                          foreach (glob($dir.DIRECTORY_SEPARATOR."*") as $annown)
                          {
                             if (is_dir($annown))
                             {
                                if (find_all_pic($annown)) continue;
                             }
                             else
                             {
                                $parth_annown[] =$annown;
                                //echo $annown; echo '<br>';
                                        if (preg_match_all("/^.*\.(jpg|jpeg|png|gif|bmp)$/i",$annown,$match, PREG_PATTERN_ORDER )) // выбираем все картинки
                                     {
                                     $matchV=array_values($match[0]); // собираем картинки в массив
                                            foreach ($matchV as $key=>$pic)
                                           {
                                              $parth_on[]=$pic;
                                              $pic_on[] ='<img src="'.$pic.'" width="100%" height="100%" >';   // делаем превью с иконкой
                                              // echo $pic; echo '<br>'; // оставил для проверки
                                              }
                                       }
                             }
                          }
                        }
                        ?>
                        <?php
                        // Применение картинки без записи в файл стилей для боди
                        if (isset($_POST['bbgimg'])) {$bbgimg=$_POST['bbgimg'] ;}
                            elseif (empty($bbgimg))
                        {
                        $bbgimg='';
                            }
                            echo '<style type="text/css";>
                           body {
                                      background-image:'.$bbgimg.';
                                     }
                           </style>';
                        // Применение картинки без записи в файл стилей для квадрата
                        if (isset($_POST['wbgimg'])) {$wbgimg=$_POST['wbgimg'] ;}
                            elseif (empty($wbgimg))
                        {
                        $wbgimg='';
                            }
                            echo '<style type="text/css";>
                           .wrap {
                                      background-image:'.$wbgimg.';
                                     background-size: 100% 100%;
                                     }
                           </style>';
                         
                        ?>
                         
                        <?php
                        // Функция для обработки имени и пути файла для боди
                        function prepare()
                        { global $str;
                          $str1=preg_replace('/^\.\\\/','', $str);
                        $str2=preg_replace("/\\\/",'/',$str1);
                        echo "url($str2)";
                        }
                        // Функция для обработки имени и пути файла для квадрата
                        function prepare1()
                        { global $st;
                          $st1=preg_replace('/^\.\\\/','', $st);
                        $st2=preg_replace("/\\\/",'/',$st1);
                        echo "url($st2)";
                        }
                        ?>
                        <?--- Форма для выбора картинки для боди --->
                        <form action="form-forum.php" method="post" enctype="multipart/form-data">
                        картинка для страницы: <input name="bbgimg" type="text" value="<?php if (isset($_POST['strok'])) {$str=$_POST['strok']; prepare($str);} ?>"><input name="find_all_pic" type="submit" value="Сканировать картинки в корневой папке"><br>
                        <input value="сменить" type="submit">
                        </form>
                        <?--- Форма для выбора картинки для квадрата --->
                        <form action="form-forum.php" method="post" enctype="multipart/form-data">
                        картинка для кадрата: <input name="wbgimg" type="text" value="<?php if (isset($_POST['strok'])) {$st=$_POST['strok']; prepare1($st);} ?>"><input name="find_all_pic" type="submit" value="Обзор"><br>
                        <input value="сменить" type="submit">
                        </form>

                      main.css
                      ExpandedWrap disabled
                        body{
                            background: red;
                        }
                        .w {
                        display: grid;
                        grid-template-columns: 3fr 1fr;
                        }
                        .form {
                        width: 100%;
                         border: 5px solid #777;
                        }
                        .wrap  {
                            background:yellow ;
                         border: 5px solid #777;
                            margin: auto ;
                            width: 130px ;
                            height: 100px ;
                            z-index: 3 ;
                        }

                      Может, когда допишу полностью рабочий вариант екслорера, который можно будет прикрутить к любой задаче, выложу его тут.
                      Сообщение отредактировано: D-G -
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0368 ]   [ 15 queries used ]   [ Generated: 29.03.24, 14:49 GMT ]