我正在尝试将文件上传到Dropbox。我在Windows上并使用XAMPP。这就是我所拥有的。
# Include the Dropbox SDK libraries
require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
$appInfo = dbx\AppInfo::loadFromJsonFile("../view/configs/json_config.json");
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "MyApp");
$authorizeUrl = $webAuth->start();
echo "1. Go to: " . $authorizeUrl . "\n";
echo "2. Click \"Allow\" (you might have to log in first).\n";
echo "3. Copy the authorization code.\n";
// $fp=fopen("php://stdin", "r");
// $in=fgets($fp,4094);
// fclose($fp);
define('STDIN',fopen("C://xampp/php/php.exe", "r"));
if (PHP_OS == 'WINNT') {
echo '$ ';
$line = trim(fgets(STDIN)); // reads one line from STDIN
//$line = stream_get_line(STDIN, 1024, PHP_EOL);
//$read = str_replace("\r\n", "", $in);
}
else {
//$line = readline('$ ');
$line = str_replace("\n", "", $in);
}
//$authCode = \trim(\readline("Enter the authorization code here: "));
list($accessToken, $dropboxUserId) = $webAuth->finish($line);
print "Access Token: " . $accessToken . "\n";
$dbxClient = new dbx\Client($accessToken, "MyApp");
$accountInfo = $dbxClient->getAccountInfo();
print_r($accountInfo);
$f = fopen("working-draft.txt", "rb");
$result = $dbxClient->uploadFile("/working-draft.txt", dbx\WriteMode::add(), $f);
fclose($f);
print_r($result);
$folderMetadata = $dbxClient->getMetadataWithChildren("/");
print_r($folderMetadata);
$f = fopen("working-draft.txt", "w+b");
$fileMetadata = $dbxClient->getFile("/working-draft.txt", $f);
fclose($f);
print_r($fileMetadata);
我找到了here
现在我在尝试执行此代码时遇到了问题,因为此代码最初使用的是Windows不支持的readline函数(或库)。我找到了一个我正在尝试使用的替代品,但它不起作用。
目前,这是我得到的错误:
“未使用的异常'Dropbox \ Exception_BadRequest',第251行的...... \ RequestUtil.php中有消息'。”
我不知道如何让这个工作。有没有人在使用XAMPP的Windows上成功完成此操作?
答案 0 :(得分:1)
这里的错误是有道理的...看起来你的代码试图读取php.exe
的内容,这听起来不是一个好主意。 :-)这就是为什么字符串是“......这个程序不能在DOS模式下运行。”
但如果你不重新定义STDIN,$line = trim(fgets(STDIN))
看起来合情合理。当你跑步时会发生什么?
答案 1 :(得分:0)
它会抛出一个异常,因为您对DropBox的请求有问题。
要获取更多调试信息,请在try / catch块中放置所有 DropBox方法调用,例如:
try
{
$authorizeUrl = $webAuth->start();
}
catch (dbx\WebAuthException_BadRequest $e) {
var_dump($e); // Will returned detailed information about the error
}
这应该让你在确定原因的正确轨道上开始。