У меня есть форма, которая позволяет пользователю заполнить несколько аспектов, а затем выбрать файл для загрузки.
Когда форма отправлена, я хочу написать код, который сохраняет файл в учетной записи Dropbox и получает доступ к прямой ссылке для загрузки и помещает ее в базу данных, на которой я размещаю.
Если кто-то это сделал, есть ли конкретный раздел API для просмотра? Или какие-нибудь примеры?
Я не могу найти это в API.
Благодарю.
Из того, что я вижу в API, это можно сделать. Вам необходимо загрузить API Dropbox Core . Внутри zip-файла вы найдете примерную папку с примером кода для аутентификации, загрузки, загрузки, прямой ссылки и т. Д. Просто просмотрите direct-link.php
и измените его на свои нужды. Ниже приведен тестовый рабочий пример загрузки файла и создания прямой ссылки для загрузки:
<?php require_once "dropbox-php-sdk-1.1.2/lib/Dropbox/autoload.php"; use \Dropbox as dbx; $dropbox_config = array( 'key' => 'your_key', 'secret' => 'your_secret' ); $appInfo = dbx\AppInfo::loadFromJson($dropbox_config); $webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0"); $authorizeUrl = $webAuth->start(); echo "1. Go to: " . $authorizeUrl . "<br>"; echo "2. Click \"Allow\" (you might have to log in first).<br>"; echo "3. Copy the authorization code and insert it into $authCode.<br>"; $authCode = trim('DjsR-iGv4PAAAAAAAAAAAbn9snrWyk9Sqrr2vsdAOm0'); list($accessToken, $dropboxUserId) = $webAuth->finish($authCode); echo "Access Token: " . $accessToken . "<br>"; $dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0"); // Uploading the file $f = fopen("working-draft.txt", "rb"); $result = $dbxClient->uploadFile("/working-draft.txt", dbx\WriteMode::add(), $f); fclose($f); print_r($result); // Get file info $file = $dbxClient->getMetadata('/working-draft.txt'); // sending the direct link: $dropboxPath = $file['path']; $pathError = dbx\Path::findError($dropboxPath); if ($pathError !== null) { fwrite(STDERR, "Invalid <dropbox-path>: $pathError\n"); die; } // The $link is an array! $link = $dbxClient->createTemporaryDirectLink($dropboxPath); // adding ?dl=1 to the link will force the file to be downloaded by the client. $dw_link = $link[0]."?dl=1"; echo "Download link: ".$dw_link."<br>"; ?>
Я сделал это очень быстро, чтобы заставить его работать. В конце концов вам может понадобиться немного настроить его, чтобы он соответствовал вашим потребностям.
В руководстве Core API есть раздел, см. Эту ссылку. Таким образом, вы можете использовать загружаемую часть следующим образом:
$f = file_get_contents('data.txt'); $result = $dbxClient->uploadFile("/data.txt", dbx\WriteMode::add(), $f); echo 'file uploaded';