Сделал аплоад изображения в форме добавления статьи.
Статья создается, изображение загружается в папку.
В базу заносится путь к изображению вида: /var/www/vhosts/мой_домен/it/uploads/images/news/file.img
Вывожу так: <img src="<?php echo $row['img']; ?>">
Пути разные, соответственно, в браузере не выводит изображение.
Подскажите, а то я совсем перед носом решения не вижу

Спустя 47 минут, 11 секунд (29.04.2012 - 21:07) walerus написал(а):
Цитата |
В базу заносится путь к изображению вида: /var/www/vhosts/мой_домен/it/uploads/images/news/file.img |
Заноси в базу
it/uploads/images/news/file.imgили отрезай лишнее перед выводом
<img src="<?php echo str_replace( '/var/www/vhosts/мой_домен', '', $row['img'] ); ?>">
Спустя 4 минуты, 59 секунд (29.04.2012 - 21:12) inpost написал(а):
Для браузеров надо давать ХОСТ пути, а не РУТ. Абсолютный путь РУТ:
/var/www/vhosts/мой_домен/it/uploads/images/news/file.img
Абсолютный путь ХОСТ:
http://site.ru/it/uploads/images/news/file.img
- Это путь куда браузер после загрузки страницы ссылается, чтобы достучаться до файла.
/var/www/vhosts/мой_домен/it/uploads/images/news/file.img
Абсолютный путь ХОСТ:
http://site.ru/it/uploads/images/news/file.img
- Это путь куда браузер после загрузки страницы ссылается, чтобы достучаться до файла.
Спустя 16 минут, 38 секунд (29.04.2012 - 21:29) mikelo написал(а):
1. Получается для записи файла нужно указывать /var/www/vhosts/мой_домен/it/uploads/images/news/file.img
2. Для браузеров записывать в БД: /it/uploads/images/news/file.img
И все это перед записью в БД?
2. Для браузеров записывать в БД: /it/uploads/images/news/file.img
И все это перед записью в БД?
if(isset($_FILES['news_img'])){
$upload_dir_img = '/var/www/vhosts/мой_домен/it/uploads/images/news/'; // Относительный путь от корня
$uploaded_img = $upload_dir_img . basename($_FILES['news_img']['name']);
if(move_uploaded_file($_FILES['news_img']['tmp_name'], $uploaded_img)){
$uploaded_img = '/it/uploads/images/news/'.$uploaded_img;
}
unset($_FILES['news_img']);
}
Спустя 3 минуты, 30 секунд (29.04.2012 - 21:32) mikelo написал(а):
Цитата (walerus @ 29.04.2012 - 19:07) | ||
Заноси в базу it/uploads/images/news/file.imgили отрезай лишнее перед выводом <img src="<?php echo str_replace( '/var/www/vhosts/мой_домен', '', $row['img'] ); ?>"> |
Спасибо!
Вариант с str_replace помог.
По поводу первого варианта:
Вот код:
if(isset($_FILES['news_img'])){
$upload_dir_img = I_ROOT.'/uploads/images/news/'; // Относительный путь от корня
$uploaded_img = $upload_dir_img . basename($_FILES['news_img']['name']);
if(move_uploaded_file($_FILES['news_img']['tmp_name'], $uploaded_img)){
true;
}
unset($_FILES['news_img']);
}
Далее запрос на запись в БД.
Если убираю I_ROOT, то путь к изображению в БД записывается, но сам файл на сервер не загружается.
Получается перед записью в БД снова str_replace делать?
PS. Я дотошно так, потому что хочу узнать какое из решений более элегантное :)
Спустя 17 минут, 51 секунда (29.04.2012 - 21:50) walerus написал(а):
mikelo делать нужно как сказал INPOST.
Для браузеров надо давать ХОСТ пути, а не РУТ.
Абсолютный путь РУТ: /var/www/vhosts/мой_домен/it/uploads/images/news/file.img
Абсолютный путь ХОСТ: http://site.ru/it/uploads/images/news/file.img - Это путь куда браузер после загрузки страницы ссылается, чтобы достучаться до файла.
т.е.
когда на сервер пишешь - Абсолютный путь РУТ
когда в базу пишешь - Абсолютный путь ХОСТ
Для браузеров надо давать ХОСТ пути, а не РУТ.
Абсолютный путь РУТ: /var/www/vhosts/мой_домен/it/uploads/images/news/file.img
Абсолютный путь ХОСТ: http://site.ru/it/uploads/images/news/file.img - Это путь куда браузер после загрузки страницы ссылается, чтобы достучаться до файла.
т.е.
когда на сервер пишешь - Абсолютный путь РУТ
когда в базу пишешь - Абсолютный путь ХОСТ
Спустя 5 минут, 55 секунд (29.04.2012 - 21:56) mikelo написал(а):
Все понял.
Спасибо, Inpost, walerus!
Спасибо, Inpost, walerus!