[Решено] Скачать прайс с https://onedrive.live.com/

Тема в разделе "PHP", создана пользователем opalko, 11 авг 2022.

  1. opalko

    opalko

    Регистрация:
    23 дек 2014
    Сообщения:
    204
    Симпатии:
    14
    Поставщик присылает ссылку, по типу (ссылка изменена для предотвращения доступа)
    https://onedrive.live.com/view.aspx?resid=D1589B698F16DE35!161&ithint=file%2Cxlsx&authkey=!AN8sJ9axR8cSH50

    там прайс, который можно скачать, посмотреть, но как написать php для скачивания этого прайса по крону? И сохранения файла на сервере. Крон будет запускать скрипт, или может такое можно провернуть без скрипта. Вроде тема популярная, а решения, как скачать с onedrive я не нашел
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
  3. opalko

    opalko

    Регистрация:
    23 дек 2014
    Сообщения:
    204
    Симпатии:
    14
    ccылка публичная, но указан адрес к папке, соответственно что-то скачивается, но в каком бы формате я его не сохранял, файл не открывается. Наверное нужен прямой адрес к файлу, а как его получить с onedrive.live.com пока непонятно
    --- Добавлено, 12 авг 2022 ---
    фонарь, по прямой ссылке, вообще файл 0кб
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    Прямая ссылка для скачивания будет выглядеть так
     
    opalko нравится это.
  5. opalko

    opalko

    Регистрация:
    23 дек 2014
    Сообщения:
    204
    Симпатии:
    14
    Если качать по ссылке, через браузер, всё скачивается как нужно. Через скрипт, файл скачивается, но пустой с размером 0кб. Использую такой скрипт, может в нём что-то не так?
    Код:
    <?php
    /**
    * Initialize the cURL session
    */
    $ch = curl_init();
    /**
    * Set the URL of the page or file to download.
    */
    curl_setopt($ch, CURLOPT_URL,
    'https://onedrive.live.com/download?cid=D0589B699F16DE35!161&resid=D0589B699F16DE35!161&ithint=file%21143&authkey=%21APpYLSru4uY1zHc');
    /**
    * Create a new file
    */
    $fp = fopen('/home/*/public_html/admin/15.xls', 'w');
    /**
    * Ask cURL to write the contents to a file
    */
    curl_setopt($ch, CURLOPT_FILE, $fp);
    /**
    * Execute the cURL session
    */
    curl_exec ($ch);
    /**
    * Close cURL session and file
    */
    curl_close ($ch);
    fclose($fp);
    ?>
     
    Последнее редактирование: 12 авг 2022
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    потому что по этой ссылке идёт редирект.

    надо добавить
    PHP:
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
     
    Baco нравится это.
  7. opalko

    opalko

    Регистрация:
    23 дек 2014
    Сообщения:
    204
    Симпатии:
    14
    Вот такая ерунда в файле, и больше ничего, я с чем-то накосячил?

    Microsoft account requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being blocked.

    To find out whether your browser supports JavaScript, or to allow scripts, see the browser's online help.
     
  8. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    в этой ^ версии скрипта ссылка не публичная. Вы можете её скопировать и вставить в бразуер (например в приватном режиме) и убедиться что у вас попросит авторизоваться.

    Изначальная ссылка из первого сообщения - публичная и скрипт работает.
    PHP:
    <?php
    /**
    * Initialize the cURL session
    */
    $ch curl_init();
    /**
    * Set the URL of the page or file to download.
    */
    curl_setopt($chCURLOPT_URL'https://onedrive.live.com/download?cid=D0589B699F16DE35!161&resid=D0589B699F16DE35!161&ithint=file%2Cxlsx&authkey=!AN8sJ9axR7cSH50');
    /**
    * Create a new file
    */
    $fp fopen('./16.xls''w+');
    /**
    * Ask cURL to write the contents to a file
    */
    curl_setopt($chCURLOPT_FILE$fp);
     
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    /**
    * Execute the cURL session
    */
    curl_exec ($ch);
    /**
    * Close cURL session and file
    */
    curl_close ($ch);
    fclose($fp);
     
    Baco и opalko нравится это.
  9. opalko

    opalko

    Регистрация:
    23 дек 2014
    Сообщения:
    204
    Симпатии:
    14
    Прекрасно, спасибо большое, всё работает
     
    $iD нравится это.