За последние 24 часа нас посетили 17622 программиста и 1917 роботов. Сейчас ищут 1028 программистов ...

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

Тема в разделе "PHP для новичков", создана пользователем YulyaT, 11 июл 2012.

  1. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    форма
    Код (Text):
    1. <form name="upload" action="upload1.php" method="POST" ENCTYPE="multipart/form-data">
    2.  Select the file to upload: <input type="file" name="userfile">
    3.  <input type="submit" name="upload" value="upload">
    4. </form>
    Сам php
    Код (Text):
    1. <?php
    2.  $uploaddir = '../products/';
    3.  $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    4.  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    5.    echo "File is valid, and was successfully uploaded.\n";
    6.  } else {
    7.    echo "File uploading failed.\n";
    8.  }
    9. ?>
    Вероятно, этот код рабочий, но...
    Как я понимаю, здесь нужен доступ к серверной папке tmp, меня туда не пустят,
    Есть другие варианты или input type="file" так работает и никак получится?
    Можно ли загружать файлы сразу в свою папку без создания временного?
     
  2. Код (Text):
    1.  
    2. <?php
    3.    // Проверяем загружен ли файл
    4.    if(is_uploaded_file($_FILES["userfile"]["tmp_name"])) {
    5.      // Если файл загружен успешно, перемещаем его
    6.      // из временной директории в конечную
    7.     $path = dirname(__FILE__) . '/';
    8.     $path .= 'img/ololo/'; //папка куда кидаем
    9.     if(move_uploaded_file($_FILES["userfile"]["tmp_name"], $path . $_FILES["userfile"]["name"])) {
    10.      echo 'файл загружен. ololo';
    11.      echo 'ссылка на файлик: <a href="' . $path . $_FILES["userfile"]["name"] . '"</a>';
    12.     }
    13.     else {
    14.      echo 'ошибка копирования файла. lol';
    15.     }
    16.    }
    17.    else {
    18.     echo 'ошибка загрузки. lol';
    19.    }
    20. ?>
    дополнительно к этому сделай проверку на формат файла и переименовывай его, не грузи под предлагаемым именем.

    и убери эту каку
    :D
     
  3. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    и это поможет?
    я же написала:
    Переименовывать и т.д. можно если заработает скрипт.
    Пока он выдает "File uploading failed" or "ошибка копирования файла. lol".
     
  4. хмм...
    очень странно. это наверное штучки сервера. у меня это работает.
     
  5. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    В том то и дело, что "штучки сервера":(
    Слетает именно на move_uploaded_file.
    Подумала, что у них не разрешено удаление из папки /tmp, сменила на copy, не помогло.
    В папку /tmp похоже файл попадает, т.к. получаю /tmp/phpqZMh9p
    Как-то хитро закрыта папка:(

    Нашла в сети секретную функцию ini_set('upload_tmp_dir', 'pix');
    Ошибку сама функция не дает, но после нее не заработали ни move_uploaded_file ни copy.
    Не представляю куда дальше копать:(((
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы на каком сервере практикуетесь?
     
  7. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    freetzi.com
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    должно работать из коробки.
     
  9. YulyaT

    YulyaT Активный пользователь

    С нами с:
    11 июн 2012
    Сообщения:
    52
    Симпатии:
    0
    на net23.net работает, но там ограничения MYSQL.
    скажите за ini_set 2 слова, действительно ей можно перенаправить темповую папку к себе?