【发布时间】:2017-11-27 17:30:33
【问题描述】:
尝试在 CodeIgniter 中重用以下 Dropbox API 代码。问题是让它在类方法和构造函数的约束下工作:
require_once('../dropbox-sdk-1.1.4/Dropbox/autoload.php');
use \Dropbox as dbx;
$accessToken = 'DROPBOX_ACCESSTOKEN';
$dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0");
需要类似于以下内容,但不喜欢 'use \Dropbox as dbx' 行等:
class Controller_name extends CI_Controller
{
public function __construct()
{
parent::__construct();
require_once('../dropbox-sdk-1.1.4/Dropbox/autoload.php');
use \Dropbox as dbx;
}
public function access_dropbox()
{
$accessToken = 'DROPBOX_ACCESSTOKEN';
$dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0");
$file = 'file.txt';
$f = fopen( $file, "rb" );
$result = $dbxClient->uploadFile( "/$file", dbx\WriteMode::add(), $f);
fclose($f);
}
}
使用下面的代码,我收到以下错误消息:
遇到未捕获的异常
类型:Kunnu\Dropbox\Exceptions\DropboxClientException
消息:调用 API 函数“文件/上传”时出错:HTTP 标头 “Dropbox-API-Arg”:路径:“db_backup”与模式不匹配 '(/(.|[\r\n]))|(ns:[0-9]+(/.)?)|(id:.*)'
文件名: /opt/lampp/htdocs/codeig-smythes/vendor/kunalvarma05/dropbox-php-sdk/src/Dropbox/Http/Clients/DropboxGuzzleHttpClient.php
行号:59
$file_path = 'public/sql_backup/db_backup_' .date("Y-m-d"). '.sql';
require_once('../vendor/autoload.php');
$app = new Kunnu\Dropbox\DropboxApp(
'APP_KEY',
'APP_SECRET',
'ACCESS_TOKEN'
);
$dropbox = new Kunnu\Dropbox\Dropbox($app);
$dropboxFile = new Kunnu\Dropbox\DropboxFile(realpath($file_path));
$file = $dropbox->upload(
$dropboxFile, basename($file_path), array('autorename' => TRUE)
);
【问题讨论】:
-
Use 语句放在类声明之前,例如 controller_name,这需要在事实之前进行 require。我真的不认为有必要在这里使用'use'语句,因为你可以做 new \Dropbox\Client(....
-
我附加的代码现在可以工作了。我省略了正斜杠: $dropboxFile, "/".$file_path, array('autorename' => TRUE)
-
很高兴看到它现在对您有用。我一直睡到大约 10 分钟前。我在 UTC -08:00 时区。
标签: codeigniter dropbox