Jump to content
  • 0

Загрузка картинки на сервер


Serjinio
 Share

Question

Задача такого плана...есть форма,при нажатии обзор выбираем картинку на своей машине и отправляем ее на сервер

притом надо чтобы сама картинка сохранилась в локальной папке сервера в какую то папку ,ну типо mysite/foto_img/av-10219.gif, а в базу, в поле ,допустим FOTO,заносится ссылка на эту картинку в формате foto_img/av-10219.gif...

Как занести ссылку в БД и занести файл в папку на сервер сделал без проблем,но это две разные операции,а мне надо их как-то объединить в одну...те нажал обзор в форме ...выбрал на локалке файл,нажал ..ДОБАВИТЬ КАРТИНКУ....и файл полетел на сервер в папку foto_img,а ссылка на этот файл(указывающая на папку foto_img на сервере)..занеслась в БД сижу ломаю голову ..видно не хватает знаний...подскажите, в каком направлении копать..

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

эта форма позволяет при нажатии ОБЗОР выбрать файл на локалке типо D:....hhhhhhhhhhhaaa.jpg

и занести на сервер в БД в поле IMG таблицы data aaa.jpg (а на сайте папка foto_img),чтобы правильно занеслось добавим VALUES ('foto_img/$img') перед $img..

<form action="add_img.php" method="post" name="form" class="form" id="form">
<p><label>Введите где лежит миниатюра

<input name="img" type="file" id="img" size="70"></label></p>
<p><label><input name="submit" type="submit" class="submit" id="submit" value="Занести !!!"></label></p>
</form>

часть кода обработчика "add_img.php"

$result = mysql_query ("INSERT INTO data (img) VALUES ('foto_img/$img')");
if ($result == 'true')
{echo "<p align='center'>Ваша картинка успешно добавлена!</p>";}

.как бы все кучеряво ..но на сайте по этому адресочку файла нет ,поэтому в следующем шаге его добавляем в папку foto_img...

(Скрипт на вскидку ,ругается на if ($_POST['ok']) ,но загружает без проблем в папку foto_img на сервере)

<form action='' method='POST' enctype='multipart/form-data' >

Фото: <input type='file' name='t_item'>
<input type='submit' name='ok' value='Добавить' /> </form>
</center>

<?php 
if ($_POST['ok']) {
$upfiledir = $_SERVER['DOCUMENT_ROOT']."/MySite/foto_img/";/* Определяем директорию на сервере. */
$upfile = $upfiledir . basename($_FILES['t_item']['name']);/* Полное имя загружаемого файла */
if (move_uploaded_file($_FILES['t_item']['tmp_name'], $upfile ) )/* если файл перемещен в нужную директорию выводим информацию */
{
$uplink = "/MySite/foto_img/".$_FILES['t_item']['name'];/* Данная переменная хранит относительную ссылку, которую можно поместить в БД */

echo "Файл ".$_FILES['t_item']['name']." успешно загружен на сервер!

Размер: ".$_FILES['t_item']['size']." байт.

тип: ".$_FILES['t_item']['type']."


}
}
?>

те делаем два движения,загружаем файл на сервер и загружаем ссылку в БД...,две формы.. как слить в один флакон

Link to comment
Share on other sites

  • 0

Хм, а почему ДВЕ формы????

Если хотите двумя скриптами: form.php - файл скажем формы

<form action='add_img.php' method='POST' enctype='multipart/form-data'>
Фото: <input type='file' name='t_item'>
<input type='submit' name='ok' value='Добавить' /> </form>

Имеем форму а в ней поле с кнопкой обзор справа и кнопку отправки.

После выбора файла путь к нему высветится в текстовом поле.

А после нажатия браузер вызовет скрипт add_img.php, в который и обьединяем оба кода: занесение в базу, и копирование в папку на сервере.

if (isset($_POST['ok']))
{
$success=0;
$upfiledir=$upfile=$uplink='';
// копируем пришедший из формы файл в папку с фотками
$upfiledir = $_SERVER['DOCUMENT_ROOT']."/MySite/foto_img/";/* Определяем директорию на сервере. */
$upfile = $upfiledir.$_FILES['t_item']['name']);/* Полное имя загружаемого файла */
if (move_uploaded_file($_FILES['t_item']['tmp_name'], $upfile ) )/* если файл перемещен в нужную директорию выводим информацию */
{
$uplink = "/MySite/foto_img/".$_FILES['t_item']['name'];/* Данная переменная хранит относительную ссылку, которую можно поместить в БД */
$success++;
}

// фиксируем название файла в базе, только в том случае если он успешно скопировался
if ($success)
{
$result = mysql_query ('INSERT INTO data (img) VALUES ("'.$uplink.'")');
if (mysql_affected_rows($result)==1) // если вставка была успешна
$success++;
}

if($success==2) // Если успешны обе операции!
{
echo "Файл ".$_FILES['t_item']['name']." успешно загружен на сервер!

Размер: ".$_FILES['t_item']['size']." байт.

тип: ".$_FILES['t_item']['type']."

}

}

Кстати $_FILES['t_item']['name'] - должен содержать только имя файла, путь на локальной машине откуда берется этот файл браузер же никогда не передает. ( в данном случае - aaa.jpg)

Link to comment
Share on other sites

  • 0

К сожалннию задача стоит сложнее ,я видимо не полностью описал,что надо..

1 заполняем поля формы...

2 доходим до поля вставки картинки (внем то и нужно получить эту ссылку..путь до файла, который мы вносим в папку FOTO на сервер,чтобы потом нажав на ОТПРАВИТЬ загоняем все поля ,в том числе и поле с путем к файлу в БД (но в папке его еще нет ,поэтому и поле пустое...))

3 нажимаем возле поля для ввода пути ссылку РЕДАКТИРОВАТЬ и уходим на другую страницу ,где находится редактор рисунка..

4 нажимаем в редакторе ОБЗОР ,выбираем файл на локалке,обрабатываем изображение и результат измененного изображения отправляем в обработчик ,который и заносит его в указанную папку FOTO на сервере,при это формирует переменную

$_FILES['t_item']['name']

с путем (ту что мен нужно )

5 ее

$_FILES['t_item']['name']

надо вернуть в форму (пункт1),и самому вернуться в нее ,без потери тех данных,которые в нее уже внесены (те после обработки попасть в форму где уже в поле добавления рисунка уже вставиться значение

$_FILES['t_item']['name']

6 ...и отправить все заполненные поля в БД

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy