将文件上传到dropbox文件夹

时间:2017-03-01 08:44:01

标签: curl dropbox-api

我试过将文件从桌面上的文件夹上传到dropbox帐户中的文件夹。

但每次我都通过此代码上传了一个空文件。

怎么可能?

下面是我的代码:

     $ch = curl_init();
     $TOKEN = "asasasa";//token here
     $url = 'https://content.dropboxapi.com/2/files/upload';
     curl_setopt($ch,CURLOPT_URL,$url);
     curl_setopt($ch,CURLOPT_POST, 1);             
     curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
     $headers = array();
     $headers[] = 'Accept: application/json';
     $headers[] = 'Content-Type: multipart/form-data';
     $headers[] = 'Dropbox-API-Arg:{"path":"/home/new/ofd","mode":{".tag":"add"},"autorename":false,"mute":false}';
     $headers[] = "Authorization: Bearer ".$TOKEN;
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);     
     $response = curl_exec($ch);  
     $droplist  = json_decode($response,true);

2 个答案:

答案 0 :(得分:1)

您似乎无法在任何地方将文件内容添加到上传调用中,因此您的代码需要一个空文件。

您可以在下面的PHP中找到使用curl使用/ 2 / files / upload的示例。这使用CURLOPT_INFILE来添加文件内容。

<?php

$path = 'test_php_upload.txt';
$fp = fopen($path, 'rb');
$size = filesize($path);

$cheaders = array('Authorization: Bearer <ACCESS_TOKEN>',
                  'Content-Type: application/octet-stream',
                  'Dropbox-API-Arg: {"path":"/test/'.$path.'", "mode":"add"}');

$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);

?>

<ACCESS_TOKEN>应替换为OAuth 2访问令牌。

答案 1 :(得分:1)

将文件上传到dropbox文件夹dropbox api v2 $dropbox_api_url = 'https://content.dropboxapi.com/2/files/upload'; //dropbox api url $token = 'Access token value put here'; // should be replaced with the OAuth 2 access token $headers = array('Authorization: Bearer '. $token, 'Content-Type: application/octet-stream', 'Dropbox-API-Arg: '. json_encode( array( "path"=> '/'. basename($filename), "mode" => "add", "autorename" => true, "mute" => false ) ) ); $ch = curl_init($dropbox_api_url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, true); $path = $filename; $fp = fopen($path, 'rb'); $filesize = filesize($path); curl_setopt($ch, CURLOPT_POSTFIELDS, fread($fp, $filesize)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //For display value as array object starts here echo ""; print_r(json_decode($response)); //For display value as array object ends here echo($response.'
'); echo($http_code.'
'); curl_close($ch);