Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как извлечь путь к файлу из массива $_FILES ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Необходимо отправить путь к файлу в базу данных
Wendetta
Отправлено: 04 Июня, 2020 - 12:58:04
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2020  


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. <!--   ------------------------------------------------------------ -->
  2.        
  3.         <?php
  4.         function PicUpload ($obj) {
  5.                 echo '<script type="text/javascript">
  6.                 window.parent.onResponse ("'.$obj.'"); </script>';
  7.         }
  8.        
  9.        
  10.         if (is_uploaded_file ($_FILES['fileupload']['tmp_name']) == true) {
  11.        
  12.         copy($_FILES['fileupload']['tmp_name'],"../image/".basename($_FILES['fileupload']['name']));
  13.         $newfilename = "../image/".$_FILES['fileupload']['name'];
  14.         /*$Pic = "../image/".$_FILES['fileupload']['name'];  <--- необходимо вывести данный путь к файлу в глобальную область видимости, чтобы затем использовать его при отправке в БД через функцию loadArticle() */
  15.        
  16.         PicUpload ("{'filename':'".$newfilename."'}");
  17.         }
  18.        
  19.        
  20.         ?>
  21.        
  22.         <script type="text/javascript">
  23.         function onResponse (d) {
  24.                 eval ('var obj = ' + d + ';');
  25.                 var ava = document.getElementById('formImage');
  26.                 ava.src = obj.filename;
  27.                 ava.style.display = 'block';
  28.         }
  29.        
  30.         </script>
  31.         <iframe id="myframe" name="myframe" style="display: none;"></iframe>
  32.         <form action="admin.php" target="myframe" method="POST" enctype="multipart/form-data">
  33.         <input type="file" name="fileupload">
  34.         <input type="submit" value="Загрузить"> <br>
  35.        
  36.         <!-- Проблема в том, что данная форма имеет атрибут target="myframe", который выводит изображение непосредственно на страницу без её перезагрузки(это удобно). Но в таком случае в глобальных массивах нет переменной $Pic      -->
  37.         </form>
  38.        
  39.        
  40.         <img src="" style="display: none;" id="formImage"/>
  41.        
  42.        
  43.         <!--   ------------------------------------------------------------ -->
  44.        
  45.         <?php
  46.         function CatID (){
  47.         $Category_title = $_POST['Category'];
  48.         global $link;
  49.         $sql = 'SELECT id FROM categories WHERE title = "'.$Category_title.'"';
  50.         $result = mysqli_query($link, $sql);
  51.         $id = mysqli_fetch_assoc($result);
  52.         return $id;
  53.         }
  54.        
  55.         $A = CatID();
  56.        
  57.         if ($A == ''){
  58.         $A = [1];}
  59.         foreach ($A as $B):
  60.         endforeach;
  61.        
  62.         $artCategory = $B;
  63.         $artName = $_POST['articleName'];
  64.         $contentArticle = $_POST['contentArticle'];
  65.        
  66.         function loadArticle($artCategory, $artName, $contentArticle, $Pic){
  67.         global $link;
  68.        
  69.         $sql = mysqli_query($link, "INSERT INTO articles (title, image, text, category_id)
  70.         VALUES ('$artName', '$Pic', '$contentArticle', '$artCategory')");
  71.         }      
  72.        
  73.         if ($_POST['AddArticle'] = true and $B != '' and $artName != '' and $contentArticle != ''/* and $Pic != ''*/){
  74.  
  75.                 loadArticle($artCategory, $artName, $contentArticle, $Pic);   /* <---  Сюда нужно отправить полный путь к загруженному файлу*/
  76.         }
  77.        
  78.         ?>
 
 Top
Строитель
Отправлено: 04 Июня, 2020 - 13:59:51
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Wendetta, $_FILES - это 'суперглобальная' или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.
 
 Top
LIME
Отправлено: 05 Июня, 2020 - 17:55:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $destPath = "../image/" . basename($_FILES['fileupload']['name']);
  2. copy($_FILES['fileupload']['tmp_name'], $destPath);
  3. $destRealPath = realpath($destPath);

(Добавление)
кстати basename отрезает расширение

(Отредактировано автором: 05 Июня, 2020 - 17:57:54)

 
 Top
LIME
Отправлено: 06 Июня, 2020 - 09:20:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Это просто означает, что она доступна во всех контекстах скрипта
со всеми вытекающими минусами глобальности
ни тебе тестов
ни тебе легкой смены реализации - и тестов как лакмуса легкости смены реализации
но это совсем другая история мой малыш ...))
(Добавление)
справедливости ради надо сказать что иногда глобальность не есть абсолютное зло
например
MoscowDateTime::now()
почему бы не получать глобально? прям статически даже
кто знает кейсы когда это плохо - велкам
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB