Как создать в PHP ссылку для загрузки файла с Яндекс Диска?

Как можно настроить скачивание файла с Яндекс Диска через API на защищенной странице приложения на PHP так, чтобы браузер начал автоматическое скачивание файла, а не переводил на страницу с ошибкой 403?
  • 23 августа 2024 г. 10:13
Ответы на вопрос 2
Чтобы создать ссылку для загрузки файла с Яндекс Диска в PHP, вам нужно выполнить следующие шаги:

1. Получить URL файла с Яндекс Диска, используя API Яндекс Диска.
2. Создать ссылку на этот URL, предварительно добавив к нему параметры, необходимые для аутентификации (например, токен доступа).

Пример кода для создания ссылки на скачивание файла с Яндекс Диска:

```php
$fileUrl = 'https://cloud-api.yandex.net/v1/disk/resources/download?path=/path_to_file/file.txt';
$headers = array(
    'Authorization: OAuth YOUR_ACCESS_TOKEN'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $fileUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$data = json_decode($response, true);
$downloadUrl = $data['href'];

echo '<a href="' . $downloadUrl . '">Download File</a>';
```

Чтобы настроить скачивание файла с Яндекс Диска через API на защищенной странице приложения на PHP так, чтобы браузер начал автоматическое скачивание файла, вам нужно добавить заголовки Content-Disposition и Content-Type к ответу API. Например:

```php
$fileUrl = 'https://cloud-api.yandex.net/v1/disk/resources/download?path=/path_to_file/file.txt';
$headers = array(
    'Authorization: OAuth YOUR_ACCESS_TOKEN'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $fileUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$data = json_decode($response, true);
$downloadUrl = $data['href'];

header('Content-Disposition: attachment; filename="file.txt"');
header('Content-Type: application/octet-stream');
readfile($downloadUrl);
``` 

Этот код отправит заголовки Content-Disposition и Content-Type в ответе, указав браузеру начать автоматическое скачивание файла.
Вы же понимаете, что если ссылки получаются идентичными то без разницы чем они сгенерированы? Код которым вы генерируете html ссылку на пыхе в студию
Похожие вопросы