5

Dropbox REST API を使用していますが、ファイルの共有 URL を正常に取得できます。

https://www.dropbox.com/developers/reference/api#shares

ただし、共有リンクを使用すると、ユーザーは dropbox.com のプレビュー ページに移動しますが、ユーザーがファイルを直接ダウンロードできる直接リンクを探しています。例えば。右クリック、名前を付けて保存...

4

3 に答える 3

13

返されるデフォルトの共有 URL は短い URLであり、短い URL は常に Dropbox のプレビュー ページを指していることがわかりました。

したがって、short_url パラメーターを false に設定して、REST API が完全な URL を返すようにする必要があります。完全な URL を取得したら、URL の末尾に ?dl=1 を追加します。

例: 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>';
于 2012-10-29T03:34:15.333 に答える
2

?dl=1リンクの最後に追加するだけです

から: https://www.dropbox.com/s/spfi4x1z600sqpg/background.jpg?dl=0

宛先: https://www.dropbox.com/s/spfi4x1z600sqpg/background.jpg?dl=1

于 2015-07-22T08:28:30.050 に答える
1

Dropbox のダウンロード ウィンドウをスキップしてファイルをダウンロードするための直接リンクを取得するための同様のソリューションを探している人は、バージョン 2 の API に追加された「Get Temporary Link」エンドポイントを使用できます。

https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link

ファイルのコンテンツをストリーミングするための一時的なリンクを取得します。このリンクは 4 時間で期限切れになり、その後 410 Gone が表示されます。リンクのコンテンツ タイプは、ファイルの MIME タイプによって自動的に決定されます。

于 2016-10-10T16:58:37.543 に答える