Dropbox API V2 Загрузить файл Ошибка PHP-Laravel

Это код библиотеки в PHP для загрузки файла в dropbox-sdk (file- Client.php) с использованием фреймворка laravel.

Я бы вызвал функцию ниже в моем контроллере dropbox.

function uploadFile($path, $writeMode, $inStream, $numBytes = null)
{
Path::checkArgNonRoot("path", $path);
WriteMode::checkArg("writeMode", $writeMode);
Checker::argResource("inStream", $inStream);
Checker::argNatOrNull("numBytes", $numBytes);

// If we don't know how many bytes are coming, we have to use chunked upload.
// If $numBytes is large, we elect to use chunked upload.
// In all other cases, use regular upload.
if ($numBytes === null || $numBytes > self::$AUTO_CHUNKED_UPLOAD_THRESHOLD) {
$metadata = $this->_uploadFileChunked($path, $writeMode, $inStream, $numBytes,
self::$DEFAULT_CHUNK_SIZE);
} else {
$metadata = $this->_uploadFile($path, $writeMode,
function(Curl $curl) use ($inStream, $numBytes) {
$curl->set(CURLOPT_POST, true);
$curl->set(CURLOPT_INFILE, $inStream);
$curl->set(CURLOPT_INFILESIZE, $numBytes);
});
}

return $metadata;
}

который в свою очередь использует эту функцию.

 private function _uploadFile($path, $writeMode, $curlConfigClosure)
{
Path::checkArg("path", $path);
WriteMode::checkArg("writeMode", $writeMode);
Checker::argCallable("curlConfigClosure", $curlConfigClosure);

$url = $this->buildUrlForGetOrPut(
$this->contentHost,
$this->appendFilePath("2/files/upload", $path),
$writeMode->getExtraParams());

$curl = $this->mkCurl($url);

$curlConfigClosure($curl);

$curl->set(CURLOPT_RETURNTRANSFER, true);
$response = $curl->exec();

if ($response->statusCode !== 200) throw RequestUtil::unexpectedStatus($response);

return RequestUtil::parseResponseJson($response->body);
}

Я недавно обновил URL до V2 с V1. Я получаю эту ошибку, но не могу найти основную причину этой ошибки.

введите описание изображения здесь

Я даже пытался жестко закодировать URL-адрес dropbox и поместить его в запрос curl, но безрезультатно. Любые предложения, помощь или даже руководство — это спасение жизни.

0

Решение

Dropbox API v2 не является заменой API v1 для замены, поэтому вы не можете просто поменять местами новые URL-адреса конечных точек API v2. Если вы пытаетесь обновить библиотеку API v1 для использования с API v2, это потребует значительных изменений кода.

Например, в примере, которым вы поделились, требуемый путь для загрузки файла был указан непосредственно в URL-пути для конечной точки v1, но это не работает для API v2, поэтому вы получаете эту ошибку.

В API v2 путь будет указан как значение в JSON в Dropbox-API-Arg заголовок запроса. Вы можете найти информацию о том, как запросы API v2 должны быть отформатированы в документации:

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

Может быть проще использовать более новую библиотеку, уже созданную для Dropbox API v2, вместо того, чтобы пытаться обновить старую. Не существует официального Dropbox API v2 PHP SDK, но здесь есть несколько библиотек для использования API v2 из PHP:

https://www.dropbox.com/developers/documentation/communitysdks

0

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

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

По вопросам рекламы [email protected]