Хобрук: Ваш путь к мастерству в программировании

Проблема с загрузкой файла в Dropbox версии 2 Php Api

Привет всем, я использую этот код для загрузки файла из Dropbox Version 2 Php Api. Но я еще не добился успеха в загрузке файла. Давайте посмотрим на скрипт, который я использую

function dbx_get_file($token, $in_filepath, $out_filepath)
{
$out_fp = fopen($out_filepath, 'w+');
if ($out_fp === FALSE)
    {
    echo "fopen error; can't open $out_filepath\n";
    return (NULL);
    }

$url = 'https://content.dropboxapi.com/2/files/download';

$header_array = array(
    'Authorization: Bearer ' . $token,
    'Content-Type:',
    'Dropbox-API-Arg: {"path":"' . $in_filepath . '"}'
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array);
curl_setopt($ch, CURLOPT_FILE, $out_fp);

$metadata = null;
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $header) use (&$metadata)
    {
    $prefix = 'dropbox-api-result:';
    if (strtolower(substr($header, 0, strlen($prefix))) === $prefix)
        {
        $metadata = json_decode(substr($header, strlen($prefix)), true);
        }
    return strlen($header);
    }
);

$output = curl_exec($ch);

if ($output === FALSE)
    {
    echo "curl error: " . curl_error($ch);
    }

curl_close($ch);
fclose($out_fp);

return($metadata);
} // dbx_get_file()

Вызов этой функции здесь.

dbx_get_file("<Access-token>", '/Screenshot_1.png', 'Screenshot_1.png');

Я также заменил этот «токен доступа» своим токеном доступа Dropbox O-auth 2. Пожалуйста, предложите мне ответ, что я делаю неправильно? Или есть другой способ загрузить файл из Dropbox с помощью DropBox Version 2 PHP Api. Спасибо

04.06.2017

  • А проблема в том? 04.06.2017
  • Проблема в том, что файл скачивается, но пустой... 04.06.2017
  • Я не вижу fwrite. Вы используете его? 04.06.2017
  • Спасибо за ответ @u_mulder .Я не использую fwrite.Можете ли вы рассказать, где я должен это использовать ..? 05.06.2017
  • Эта строка уже должна сказать curl записать данные в файл: curl_setopt($ch, CURLOPT_FILE, $out_fp);. Этот код работает для меня. Вы должны проверить, действительно ли удаленный файл содержит нулевые байты, и что у вас есть доступ для записи в локальный файл. 05.06.2017
  • Hy @Greg Спасибо за ответ. Удаленный образ в порядке и имеет размер 57 КБ. Файл создан на моем локальном сервере, но он поврежден. В чем может быть причина? 05.06.2017
  • Локальный файл, созданный на локальном сервере, имеет размер 25 КБ, но исходный файл составляет 57 КБ ... Файл SO повреждается. 05.06.2017

Ответы:


1

Я сделал это с помощью библиотеки запросов https://github.com/rmccue/Requests/ Вот мой код

include('Requests-master/library/Requests.php');
Requests::register_autoloader();
$token="Your Access Token is here";
$response = 
Requests::post("https://content.dropboxapi.com/2/files/download", array(
'Authorization' => "Bearer ".$token,
'Dropbox-Api-Arg' => json_encode(array('path' => '/Screenshot_1.png')),
));
$fileContent = $response->body;
/*Download the file using file_put_contents method*/
file_put_contents("Screenshot_1.png",$fileContent);
$metadata = json_decode($response->headers['Dropbox-Api-Result'], true);
echo "File " . $metadata["name"] . " has the rev " . $metadata["rev"] . ".\n";

Файл успешно скачивается... :)

05.06.2017
Новые материалы

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...