ФорумПрограммированиеPHP для идиотов → Загрузка картинки на сервер

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

  • dennsp

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 17 мая 2011 г. 18:48

    Имеется известный сайт, у сайта есть страница публикации объявления:
    http://www.avito.ru/additem
    На этой странице внизу имеется блок "Фотографии", в который загружаются картинки.

    Прошу помощи в написании функции загрузки картинки на сервер, второй день уже голову ломаю над этим, но ничего не получается.
    То есть мне нужно загрузить картинку на сервер и получить в ответ адрес картинки.

    Желательно сделать это с помощью вот такой функции отправки запроса:
    function ppage($url,$postdata,$ref=false) {
    $uagent = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10";
    $ch = curl_init( $url );
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_VERBOSE, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_REFERER,$ref);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_ENCODING, "");
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($ch, CURLOPT_COOKIEJAR,$_SERVER['DOCUMENT_ROOT'].'/'.basename(dirname(__FILE__)).'/cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE,$_SERVER['DOCUMENT_ROOT'].'/'.basename(dirname(__FILE__)).'/cookies.txt');
    $content = curl_exec( $ch );
    $err = curl_errno( $ch );
    $errmsg = curl_error( $ch );
    $header = curl_getinfo( $ch );
    curl_close( $ch );
    $header['errno'] = $err;
    $header['errmsg'] = $errmsg;
    $header['content'] = $content;
    return $header[content];
    }
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 17 мая 2011 г. 22:48, спустя 4 часа 42 секунды

    читайте документацию и все у вас получится :-)
    Сапожник без сапог
  • dennsp

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 18 мая 2011 г. 3:33, спустя 4 часа 44 минуты 28 секунд


    читайте документацию и все у вас получится :-)
    Боюсь, что надо слишком много прочитать документации, не осилю я столько. Я вообще в php новичок, а задачу решить надо. Сколько пытался адаптировать примеры из интернета, ничего не получилось.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 18 мая 2011 г. 3:49, спустя 15 минут 49 секунд

    Желательно сделать это с помощью вот такой функции

    эта фраза подразумевает что решение тут накидают сейчас готовое?
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 18 мая 2011 г. 3:58, спустя 9 минут 44 секунды

    Я вообще в php новичок, а задачу решить надо

    Вообще нормальные новички постоянно читаю ман, а вообще нормальные читают его полностью… А, задачу решить надо? Ну так решай, никто за тебя ман читать не может…
  • dennsp

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 18 мая 2011 г. 4:29, спустя 30 минут 34 секунды


    Желательно сделать это с помощью вот такой функции

    эта фраза подразумевает что решение тут накидают сейчас готовое?
    Разве я попросил написать за меня всю программу? Я всего-то попросил помощи в загрузке картинки с ИМЕЮЩЕЙСЯ функцией POST.
    Разумеется, загрузка картинки - это не цель, а всего лишь часть общей задачи. Все остальное по этой задаче я сделаю сам, поскольку там не требуется специфических знаний по веб-программированию, там действительно можно почитать мануал и все понять. Но с загрузкой картинок ничего не получается, с этими header, content-type и прочим ничего не выходит, не хватает специфических знаний. У меня работает функция отправки объявления, полностью работает, но не работает загрузка картинок в нем.


    Я вообще в php новичок, а задачу решить надо

    Вообще нормальные новички постоянно читаю ман, а вообще нормальные читают его полностью… А, задачу решить надо? Ну так решай, никто за тебя ман читать не может…
    Уважаемый, бывают в мире и другие профессии, не связанные с программированием и я вполне успешно справляюсь со своими обязанностями. Но вот возникла непрофильная задача (моя профессия сильно далека от программирования), которую надо решить.
    Если получать медицинское образование, когда что-то болит, юридическое образование когда возникли правовые трудности, то так и жизни не хватит.
    У меня возникло затруднение с программой на php, вот я и пришел к "специалистам" в php, на профильный форум. Вот только пока специалистов здесь не видно, одни демагоги.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 18 мая 2011 г. 5:23, спустя 54 минуты 32 секунды

    Уважаемый, бывают в мире и другие профессии, не связанные с программированием и я вполне успешно справляюсь со своими обязанностями. Но вот возникла непрофильная задача (моя профессия сильно далека от программирования), которую надо решить.
    Если получать медицинское образование, когда что-то болит, юридическое образование когда возникли правовые трудности, то так и жизни не хватит.
    У меня возникло затруднение с программой на php, вот я и пришел к "специалистам" в php, на профильный форум. Вот только пока специалистов здесь не видно, одни демагоги.

    разумно рассуждаете, так а что "вы не пошли ко врачу" то? то есть наемному прогарммисту, а сами пытаетесь. когда у вас аппендицит вы же не оперируете себя сами xD

    по делу - я сейчас дам ссылку, и если после нее вы не поймете как делать (то есть следующий от вас пост будет не "спасибо, все получилось, смотрите как работает, вот код! ура, я молодец!") - я вас забаню.

    http://ru.php.net/manual/en/function.curl-setopt.php#101231
    Спустя 112 сек.
    с этого момента я считаю последующий бан правомерным, если он будет ;)

    Сапожник без сапог
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 18 мая 2011 г. 5:28, спустя 5 минут 3 секунды

    Вот по этому каждый должен заниматься своим делом.
    С таким же успехом можно пойти на медицинский форум и попросить написать, как себе аппендицит удалить и доказывать, что это сделать необходимо, но задача не профильная.

    Тебе сказали идти читать мануал, ты не хочешь. Очевидно гуглить ты тоже не хочешь.
    Вот тебе всё необходимое, для загрузки файла на сервер:
    <form method="POST" action="action.php" enctype="multipart/form-data">
    <input type='file' name='my_file'>
    $_FILES['my_file'][…] (tmp_name, name …)
    move_uploaded_file()


    PS. обогнал дуд с аппендицитом )))
    from TRIAL with LOVE
  • dennsp

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 18 мая 2011 г. 6:18, спустя 49 минут 8 секунд


    Уважаемый, бывают в мире и другие профессии, не связанные с программированием и я вполне успешно справляюсь со своими обязанностями. Но вот возникла непрофильная задача (моя профессия сильно далека от программирования), которую надо решить.
    Если получать медицинское образование, когда что-то болит, юридическое образование когда возникли правовые трудности, то так и жизни не хватит.
    У меня возникло затруднение с программой на php, вот я и пришел к "специалистам" в php, на профильный форум. Вот только пока специалистов здесь не видно, одни демагоги.

    разумно рассуждаете, так а что "вы не пошли ко врачу" то? то есть наемному прогарммисту, а сами пытаетесь. когда у вас аппендицит вы же не оперируете себя сами xD
    Аппендицит, разумеется, прооперирует специалист, а вот по поводу простуды проконсультируюсь со знакомым доктором по телефону, а не пойду в поликлинику к платному специалисту. И дело здесь даже не в деньгах. Было бы как-то глупо написать программу на 300 строк и 3 строки купить у "специалиста".

    Согласно примеру по ссылке, делаю вот так:
    <?php
    $ch = curl_init();
    $data = array('file' => '@c:\1.jpg');
    curl_setopt($ch, CURLOPT_URL, 'http://www.avito.ru/additem/upload/');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $response = curl_exec($ch);
    $header = curl_getinfo( $ch );
    echo $response."<br>";
    print_r($header);
    ?>


    и файл, судя по всему, отправляется: [upload_content_length] => 58790
    но в $response получаю "1", хотя при отправке картинки вручную, по данным HTTP Analyzer ответ должен быть таким: "/tmp_images/a8decf76d8bb266426de468018f3ec6e-1305722922_80x60.jpg"

    А баном угрожать, так это вообще детский сад. Давайте вообще ничего не писать на форумах, а только сидеть и разбираться в "манах".
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 18 мая 2011 г. 6:20, спустя 2 минуты 49 секунд

    но в $response получаю "1"

    ага, эпик фейл

    Давайте вообще ничего не писать на форумах, а только сидеть и разбираться в "манах".

    давайте, я только ЗА.

    по делу - можно было на куски код в начале хотя бы этой темы взглянуть и понять что в этом коде не хватает


    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    чтобы результат получать в перменную а не на экран выводилась
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!