HTTP загрузить в Dropbox и поделиться - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть загрузка файла dropbox.Следующий код работает нормально, но я хочу автоматически поделиться с «любым, у кого есть ссылка» и вернуть ссылку для обмена, чтобы я мог использовать ее для ссылки в моей программе.

КОД PHP

$DROPBOX_path = 'folder/subfolder1/subfolder2/user.png';
$path = './tmp/user.png';
$fp = fopen($path, 'rb');
$size = filesize($path);

$cheaders = array('Authorization: Bearer '. $DROPBOX_ACCESS_TOKEN,
        'Content-Type: application/octet-stream',
        'Dropbox-API-Arg: '.
        json_encode(
            array(
                "path"=> '/'.$DROPBOX_path,
                "mode" => "add",
                "autorename" => false,
                "mute" => true

            )
        )

    );


$ch = curl_init('https://content.dropboxapi.com/2/files/upload');
curl_setopt($ch, CURLOPT_HTTPHEADER, $cheaders);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, $size);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

echo $response;
curl_close($ch);
fclose($fp);

Я пробовал это, но я получаю сообщение об ошибке: Ошибка при вызове функции API "shared / create_shared_link_with_settings": тело запроса: не удалось декодировать ввод как JSON

    $cheaders = array('Authorization: Bearer '. $DROPBOX_ACCESS_TOKEN,
        'Content-Type: application/json',
        'data: '.
        json_encode(
            array(
                "path"=> '/'.$DROPBOX_path,
                "settings" => array("requested_visibility" => "public")

            )
        )

    );

    $ch = curl_init('https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings');
//$ch = curl_init('https://api.dropboxapi.com/1/shares/auto/');
curl_setopt($ch, CURLOPT_HTTPHEADER, $cheaders);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

echo $response;
curl_close($ch);
fclose($fp);

1 Ответ

0 голосов
/ 08 декабря 2018

Это исправлено

$parameters = array('path' => '/'.$DROPBOX_path);

$headers = array('Authorization: Bearer '.$DROPBOX_ACCESS_TOKEN,
                 'Content-Type: application/json');

$curlOptions = array(
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($parameters),
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_VERBOSE => true
    );

$ch = curl_init('https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings');
curl_setopt_array($ch, $curlOptions);

$response = curl_exec($ch);
echo $response;

curl_close($ch);
...