codeigniter — Загрузить файл в Dropbox с компьютера пользователя, используя PHP API

Я новичок в Dropbox API, Я выполнил код, который загружает файл (на хост моего сайта) в мой Dropbox с данным токеном. Процесс проходит успешно.
Я хочу создать страницу, которая позволит пользователю выбрать файл (с его / ее локального компьютера) и загрузить его прямо в мой почтовый ящик.

У меня есть идея, что контроллер сначала загрузит файл на хост, а затем загрузит в dropbox. Однако эта идея отстой, так как для ее завершения требуется больше времени и пропускной способности. И я должен удалить файл на хосте после загрузки.

Это код, который работает на моем хосте:

<?php

require_once "dropbox-sdk/lib/Dropbox/autoload.php";

use \Dropbox as dbx;

$dropbox_config = array(
'key'    => 'my key',
'secret' => 'my secret key'
);

$appInfo = dbx\AppInfo::loadFromJson($dropbox_config);
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");


$accessToken = 'my token code is given here';
$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);
$dw_link = $link[0]."?dl=1";

echo "Download link: ".$dw_link."<br>";

?>

И я использую Codeigniter

1

Решение

У меня есть идея, что контроллер сначала загрузит файл на хост, а затем загрузит в dropbox. Однако эта идея отстой, так как для ее завершения требуется больше времени и пропускной способности.

К сожалению, это единственный безопасный способ сделать это. Для добавления файла в Dropbox необходимо знать токен доступа OAuth для вашей учетной записи, и вы не можете позволить другим знать этот токен. (Это даст им контроль над учетной записью.) Таким образом, токен должен храниться в секрете на вашем сервере. Это означает, что файл должен быть загружен на ваш сервер и перенесен в Dropbox оттуда.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector