Загрузка и выгрузка url изображения в БД

140
06 июля 2017, 03:20

Вопрос в следующем. есть код загрузки абсолютного пути

if((!empty($_FILES["userfile"])) && ($_FILES['userfile']['error'] == 0)) { 
  // проверяем, что файл это изображение JPEG и его размер не больше 350кб 
  $filename = basename($_FILES['userfile']['name']); 
  $ext = substr($filename, strrpos($filename, '.') + 1); 
  if (($ext == "png") && ($_FILES["userfile"]["type"] == "image/png") &&  
    ($_FILES["userfile"]["size"] < 350000000)) { 
    // путь для сохранения файла 
      $newname = dirname(__FILE__).'/upload/'.$filename; 
      // проверяем, файл с таким названием уже есть на сервере 
      if (!file_exists($newname)) { 
        // переместить загруженный файл в новое место 
        if ((move_uploaded_file($_FILES['userfile']['tmp_name'],$newname))) { 
           echo "Прелестно, файл был загружен: ".$newname; 
        } else { 
           echo "Произошла ошибка при загрузке файла!"; 
        } 
      } else { 
         echo "Ошибка: файл ".$_FILES["userfile"]["name"]." уже существует"; 
      } 
  } else { 
     echo "Ошибка при загрузке файла, изображение не .png или больше чем 350кб."; 
  } 
} else { 
 echo "Ошибка: файл не загружен!";

В БД записывается все корректно в виде /var/www/..../upload/xxx.png Возникает проблема с выгрузкой и размещением на сайте. Пример кода:

while($array = mysql_fetch_array($resultat4)) 
{ 
		echo '<div class="main_text" style="float:right;">'; 
			echo '<div class="head">' .$array['name']. '</div><br>'; 
			echo '<img src='.$array['file'].'>';  
       
      ......

Собственно в src прописывается фул адрес /var/www.... Подскажите, можно ли его обрезать до нужного ./upload/ или же что стоит изменить в коде. Заранее огромное спасибо

Answer 1

Не весь код предоставлен, нет сохранения пути к файлу в Базу данных.

Но это решение корректный ответ сервера при загрузке изображения, рекомендую загружать в бд файл не от корня, а от папки uploads. А ещё лучше - это хранит название файла в чистом виде!

Замени с

$newname = dirname(__FILE__).'/upload/'.$filename;
// проверяем, файл с таким названием уже есть на сервере
if (!file_exists($newname)) {
    // переместить загруженный файл в новое место
    if ((move_uploaded_file($_FILES['userfile']['tmp_name'],$newname))) {
       echo "Прелестно, файл был загружен: ".$newname;
    } else {
       echo "Произошла ошибка при загрузке файла!";
    }
} else {
    echo "Ошибка: файл ".$_FILES["userfile"]["name"]." уже существует";
}

На

$newname = dirname(__FILE__).'/upload/'.$filename;
$path = '/upload/'.$filenam;
// проверяем, файл с таким названием уже есть на сервере
if (!file_exists($newname)) {
    // переместить загруженный файл в новое место
    if ((move_uploaded_file($_FILES['userfile']['tmp_name'],$newname))) {
        echo "Прелестно, файл был загружен: ".$path;
    } else {
        echo "Произошла ошибка при загрузке файла!";
    }
} else {
    echo "Ошибка: файл ".$_FILES["userfile"]["name"]." уже существует";
}
Answer 2

Спасибо всем кто откликнулся, разобрался:)

READ ALSO
Как создать массив с локальным временем (HH:MM:SS)?

Как создать массив с локальным временем (HH:MM:SS)?

нужно создать символьный массиив с локальны временем(Часы:Минуты:Секунды) 24-часовая система

246
Преобразование типов в const char*

Преобразование типов в const char*

Нужна помощь в приведении к правильному типу данныхПри помощи строкового типа я получаю список файлов в папке

300
Не работает обработчик change с jQuery Selectmenu

Не работает обработчик change с jQuery Selectmenu

Почему не работают ниon('change',

228