Я использую Dropbox REST API, и я могу успешно получить URL-адрес для файла.
https://www.dropbox.com/developers/reference/api#shares
Однако ссылка на общий ресурс выводит пользователя на страницу предварительного просмотра на dropbox.com, тогда как я ищу прямую ссылку, которую пользователь мог бы напрямую загрузить файл. например. Щелкните правой кнопкой мыши, Сохранить как …
Оказывается, возвращаемый URL-адрес общего доступа – это короткий URL-адрес, а короткий URL-адрес всегда укажет на страницу предварительного просмотра Dropbox.
Поэтому вам необходимо вернуть REST API для возврата полного URL-адреса, установив для параметра short_url значение false. Когда у вас будет полный URL-адрес, добавьте? Dl = 1 в конец URL-адреса.
Например: https://dl.dropbox.com/s/xxxxxxxxxxxxxxxxxx/MyFile.pdf?dl=1
Дополнительная информация :
https://www.dropbox.com/help/201/en
Запросить пользователя для сохранения при загрузке с Dropbox
Пример PHP :
В этом примере взяты примеры из заимствованного / вдохновленного кода: http://www.phpriot.com/articles/download-with-curl-and-php
http://www.humaan.com.au/php-and-the-dropbox-api/
/* These variables need to be defined */ $app_key = 'xxxxxxxx'; $app_secret = 'xxxxxxxxxxxxxxxxxxxx'; $user_oauth_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $user_oauth_access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $ch = curl_init(); $headers = array( 'Authorization: OAuth oauth_version="1.0", oauth_signature_method="PLAINTEXT"' ); $params = array('short_url' => 'false', 'oauth_consumer_key' => $app_key, 'oauth_token' => $user_oauth_access_token, 'oauth_signature' => $app_secret.'&'.$user_oauth_access_token_secret); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $params); curl_setopt( $ch, CURLOPT_URL, 'https://api.dropbox.com/1/shares/'.$dir ); /* * To handle Dropbox's requirement for https requests, follow this: * http://artur.ejsmont.org/blog/content/how-to-properly-secure-remote-api-calls-from-php-application */ curl_setopt( $ch, CURLOPT_CAINFO,getcwd() . "\dropboxphp\cacert.pem"); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, TRUE); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE ); $api_response = curl_exec($ch); if(curl_exec($ch) === false) { echo 'Curl error: ' . curl_error($ch); } $json_response = json_decode($api_response, true); /* Finally end with the download link */ $download_url = $json_response['url'].'?dl=1'; echo '<a href="'.$download_url.'">Download me</a>';
просто добавьте ?dl=1
в конце ссылки
от: http://img.ruphp.com/php/background.jpg?dl=0
по адресу : http://img.ruphp.com/php/background.jpg?dl=1
Пользователи, которые ищут аналогичное решение для получения прямой ссылки на скачивание файла, который пропускает окно загрузки Dropbox, могут использовать конечную точку «Получить временную ссылку», добавленную в версии 2 API.
https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link
Получите временную ссылку на потоковое содержимое файла. Эта ссылка истечет через четыре часа, а затем вы получите 410 Gone. Тип содержимого ссылки определяется автоматически типом файла файла.