За последние 24 часа нас посетили 35526 программистов и 1819 роботов. Сейчас ищут 837 программистов ...

Копирование файла в форму

Тема в разделе "PHP для новичков", создана пользователем aaa___bbb, 22 янв 2017.

  1. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    Чего то я по страшному туплю. Как загрузить (скопировать) файл в форму автоматически? Есть путь к файлу files/file1.jpg.
    file_get_contents возвращает ересь, я так понимаю декодирует файл.
    А нужно мне это все, чтобы отправить изображение пост запросом. Можно и без формы, но я и для этого не нашел решения. Точнее что-то типа такого
    PHP:
    1. $upload_url = 'Какой то урл';
    2. $options = array(
    3.      http' => array(
    4.      'header'  => "Content-type: multipart/form-data\r\n",
    5.       'method'  => 'POST',
    6.      'content' => 'photo='.$upload_photo
    7.       )
    8. );
    9. $context  = stream_context_create($options);
    10. $result_upload = file_get_contents($upload_url, false, $context);
    И опять же не понятно, как передать файл в переменную $upload_photo
    curl не работает, так как 5.4
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Это не ересь, это содержимое файла.
    PHP:
    1. $file = file_get_contents('http://example.com/test.jpg');
    2. $data = array('filename' => 'testfile', 'file' => $file);
    3. $data = http_build_query($data);
    4. $context_options = array(
    5.     'http' => array(
    6.         'method' => 'POST',
    7.         'header' => array(
    8.             "Content-type: application/x-www-form-urlencoded",
    9.             "Content-Length: " . strlen($data)
    10.         )
    11.         ,
    12.         'content' => $data
    13.     )
    14. );
    15.  
    16. $context = stream_context_create($context_options);
    17. $s = file_get_contents("http://example1.com/", false, $context);
     
  3. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    Не получается передать этим способом файл. Либо я не понял сути способа.
    Переменная $s это результат передачи файла на новую страницу. В какой переменной это находится? Глобальная $_FILES выдает NULL.
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @aaa___bbb, а где ты ожидаешь файл? И как ты пытаешься вообще сделать?
     
  5. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    Основная задача передать в через api vk на загрузку на стену фото. Точнее на выделенное для этого урл. Через способ этот - json ответ возвращает пустое поле на месте файла.
    Поэкспериментировав заодно - передавал файл на другую страницу на локалке и опять же ничего.
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  7. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    Совершенное верно. И я сейчас нахожусь а пункте "Передайте файлы на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полями file1-file5. Эти поля должны содержать изображения в формате multipart/form-data. "
    Соответственно заменяю поля и ничего не происходит. Приходит такой JSON ответ: "{"server":626518,"photo":"[]","hash":"910772a40046b53df2900670db1bfbc8"}"
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @aaa___bbb, т.е. ты почитал документацию и на этом остановился?
     
  9. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    Это ж троллинг, да? :confused:
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  11. aaa___bbb

    aaa___bbb Новичок

    С нами с:
    10 янв 2017
    Сообщения:
    14
    Симпатии:
    4
    В общем перешел на пхп7, удалил нафиг денвер, и воспользовался курлом.
    Нафиг эти танцы с бубном. Код, если кому надо вдруг.
    PHP:
    1. $fileName = $_SERVER["DOCUMENT_ROOT"]."/".$your_file;
    2. $finfo = finfo_open(FILEINFO_MIME_TYPE);
    3. $finfo = finfo_file($finfo, $fileName);
    4. $cFile = curl_file_create ($fileName, $finfo, basename($fileName));
    5. $data = array( "photo" => $cFile, "filename" => $cFile->postname);
    6. $cURL = curl_init($upload_url);
    7. curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
    8. curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
    9. curl_setopt($cURL, CURLOPT_POST, true);
    10. curl_setopt($cURL, CURLOPT_POSTFIELDS, $data);
    11. $response = curl_exec($cURL);
     
    mahmuzar и denis01 нравится это.