Поставщик присылает ссылку, по типу (ссылка изменена для предотвращения доступа) https://onedrive.live.com/view.aspx?resid=D1589B698F16DE35!161&ithint=file%2Cxlsx&authkey=!AN8sJ9axR8cSH50 там прайс, который можно скачать, посмотреть, но как написать php для скачивания этого прайса по крону? И сохранения файла на сервере. Крон будет запускать скрипт, или может такое можно провернуть без скрипта. Вроде тема популярная, а решения, как скачать с onedrive я не нашел
если ссылка публичная, то можно обычным curl'ом скачать. Можно через SDK - https://github.com/krizalys/onedrive-php-sdk
ccылка публичная, но указан адрес к папке, соответственно что-то скачивается, но в каком бы формате я его не сохранял, файл не открывается. Наверное нужен прямой адрес к файлу, а как его получить с onedrive.live.com пока непонятно --- Добавлено, 12 авг 2022 --- фонарь, по прямой ссылке, вообще файл 0кб
Если качать по ссылке, через браузер, всё скачивается как нужно. Через скрипт, файл скачивается, но пустой с размером 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); ?>
потому что по этой ссылке идёт редирект. надо добавить PHP: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
Вот такая ерунда в файле, и больше ничего, я с чем-то накосячил? 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.
в этой ^ версии скрипта ссылка не публичная. Вы можете её скопировать и вставить в бразуер (например в приватном режиме) и убедиться что у вас попросит авторизоваться. Изначальная ссылка из первого сообщения - публичная и скрипт работает. PHP: <?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%2Cxlsx&authkey=!AN8sJ9axR7cSH50');/*** Create a new file*/$fp = fopen('./16.xls', 'w+');/*** Ask cURL to write the contents to a file*/curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);/*** Execute the cURL session*/curl_exec ($ch);/*** Close cURL session and file*/curl_close ($ch);fclose($fp);