За последние 24 часа нас посетили 74182 программиста и 10165 роботов. Сейчас ищут 2483 программиста ...

Сохранить файл на сервере в папку по HTTP заголовкам?

Тема в разделе "PHP для новичков", создана пользователем weber1, 4 мар 2018.

  1. weber1

    weber1 Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    10
    Симпатии:
    0
    После выполнения curl в переменную $res = curl_exec($ch); попадает заголовки и страница с непонятными символами(сам файл,наверное) , нужно сохранит этот файл в папке file.
    $res:
    Код (Text):
    1.  
    2. HTTP/1.1 200 OK
    3. Date: Sun, 04 Mar 2018 16:58:56 GMT
    4. Server: snff
    5. X-Frame-Options: SAMEORIGIN
    6. Content-Type: application/x-bittorrent
    7. Content-Disposition: attachment; filename="CHelovek-Nevidimka.10_sezon.2017.WEB-DLRip.File.torrent"
    8. Content-Transfer-Encoding: binary
    9. Age: 1239
    10. X-Debug: 86400.000 1
    11. Content-Length: 47276
    12. Accept-Ranges: bytes
    13. Vary: Accept-Encoding,User-Agent
    14. X-XSS-Protection: 1; mode=block
    15. X-Content-Type-Options: nosniff
    16. Keep-Alive: timeout=5, max=100
    17. Connection: Keep-Alive
    18.  
    19. d8:announce20:udp://.........................̾O®ÇÂ÷eÉ}¢ÐÒe{nÀÍN;fÝ)°
    20. ;Ó¥õ    t×§º¾ª8s"XºVg‚°¡‹Õ‰MÂe9ï\ Ÿ…ʶÅùl¥(Ûÿ"‚ó“·D,ìH†½èøÊðþÖ›îsÙ»* ÁÇÕPÇš(â¡Iø)ÎOʽÍðV~x©TAÖ A’0õij&vG„7—ÆÛг*Td9
    Прошу показать пример
     
    #1 weber1, 4 мар 2018
    Последнее редактирование: 4 мар 2018
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    Да, контент начинается после пустой строки. Из заголовков можете взять имя файла и размер.
     
  3. weber1

    weber1 Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    10
    Симпатии:
    0
    Код (Text):
    1. preg_match('/Content-Disposition: attachment; filename="(.*?)"/',$str,$res2);
    2.         echo $Disposition = $res2[1];
    Имя я взял, точно так и размер, а как его сохранить в папу file на моем сервере?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    В смысле? Любой ф-цией записи в файл, например file_put_contents. Из $res вырезаете фрагмент после "\r\n\r\n" длиной в размер файла. Там после контента еще может быть "\r\n" и др. мусор, ну и битый ответ тоже может быть, так что нужно проверять, чтобы размер полученных данных соответствовал размеру файла.